{
  "id": "9fe5407f94c9bde4609e38c76a85e5f9",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.7.4",
  "solcLongVersion": "0.7.4+commit.3f05b770",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/exchange/NiftyswapExchange.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\npragma experimental ABIEncoderV2;\nimport \"../interfaces/INiftyswapExchange.sol\";\nimport \"../utils/ReentrancyGuard.sol\";\nimport \"multi-token-standard/contracts/interfaces/IERC165.sol\";\nimport \"multi-token-standard/contracts/interfaces/IERC1155.sol\";\nimport \"multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol\";\nimport \"multi-token-standard/contracts/tokens/ERC1155/ERC1155MintBurn.sol\";\n\n\n/**\n * This Uniswap-like implementation supports ERC-1155 standard tokens\n * with an ERC-1155 based token used as a currency instead of Ether.\n *\n * See https://github.com/0xsequence/erc20-meta-token for a generalized\n * ERC-20 => ERC-1155 token wrapper\n *\n * Liquidity tokens are also ERC-1155 tokens you can find the ERC-1155\n * implementation used here:\n *    https://github.com/horizon-games/multi-token-standard/tree/master/contracts/tokens/ERC1155\n *\n * @dev Like Uniswap, tokens with 0 decimals and low supply are susceptible to significant rounding\n *      errors when it comes to removing liquidity, possibly preventing them to be withdrawn without\n *      some collaboration between liquidity providers.\n */\ncontract NiftyswapExchange is ReentrancyGuard, ERC1155MintBurn, INiftyswapExchange {\n  using SafeMath for uint256;\n\n  /***********************************|\n  |       Variables & Constants       |\n  |__________________________________*/\n\n  // Variables\n  IERC1155 internal token;                        // address of the ERC-1155 token contract\n  IERC1155 internal currency;                     // address of the ERC-1155 currency used for exchange\n  bool internal currencyPoolBanned;               // Whether the currency token ID can have a pool or not\n  address internal factory;                       // address for the factory that created this contract\n  uint256 internal currencyID;                    // ID of currency token in ERC-1155 currency contract\n  uint256 internal constant FEE_MULTIPLIER = 995; // Multiplier that calculates the fee (0.5%)\n\n  // Mapping variables\n  mapping(uint256 => uint256) internal totalSupplies;    // Liquidity pool token supply per Token id\n  mapping(uint256 => uint256) internal currencyReserves; // currency Token reserve per Token id\n\n\n  /***********************************|\n  |            Constructor           |\n  |__________________________________*/\n\n  /**\n   * @notice Create instance of exchange contract with respective token and currency token\n   * @param _tokenAddr     The address of the ERC-1155 Token\n   * @param _currencyAddr  The address of the ERC-1155 currency Token\n   * @param _currencyID    The ID of the ERC-1155 currency Token\n   */\n  constructor(address _tokenAddr, address _currencyAddr, uint256 _currencyID) public {\n    require(\n      address(_tokenAddr) != address(0) && _currencyAddr != address(0),\n      \"NiftyswapExchange#constructor:INVALID_INPUT\"\n    );\n    factory = msg.sender;\n    token = IERC1155(_tokenAddr);\n    currency = IERC1155(_currencyAddr);\n    currencyID = _currencyID;\n\n    // If token and currency are the same contract,\n    // need to prevent currency/currency pool to be created.\n    currencyPoolBanned = _currencyAddr == _tokenAddr ? true : false;\n  }\n\n  /***********************************|\n  |        Exchange Functions         |\n  |__________________________________*/\n\n  /**\n   * @notice Convert currency tokens to Tokens _id and transfers Tokens to recipient.\n   * @dev User specifies MAXIMUM inputs (_maxCurrency) and EXACT outputs.\n   * @dev Assumes that all trades will be successful, or revert the whole tx\n   * @dev Exceeding currency tokens sent will be refunded to recipient\n   * @dev Sorting IDs is mandatory for efficient way of preventing duplicated IDs (which would lead to exploit)\n   * @param _tokenIds             Array of Tokens ID that are bought\n   * @param _tokensBoughtAmounts  Amount of Tokens id bought for each corresponding Token id in _tokenIds\n   * @param _maxCurrency          Total maximum amount of currency tokens to spend for all Token ids\n   * @param _deadline             Timestamp after which this transaction will be reverted\n   * @param _recipient            The address that receives output Tokens and refund\n   * @return currencySold How much currency was actually sold.\n   */\n  function _currencyToToken(\n    uint256[] memory _tokenIds,\n    uint256[] memory _tokensBoughtAmounts,\n    uint256 _maxCurrency,\n    uint256 _deadline,\n    address _recipient)\n    internal nonReentrant() returns (uint256[] memory currencySold)\n  {\n    // Input validation\n    require(_deadline >= block.timestamp, \"NiftyswapExchange#_currencyToToken: DEADLINE_EXCEEDED\");\n\n    // Number of Token IDs to deposit\n    uint256 nTokens = _tokenIds.length;\n    uint256 totalRefundCurrency = _maxCurrency;\n\n    // Initialize variables\n    currencySold = new uint256[](nTokens); // Amount of currency tokens sold per ID\n    uint256[] memory tokenReserves = new uint256[](nTokens);  // Amount of tokens in reserve for each Token id\n\n    // Get token reserves\n    tokenReserves = _getTokenReserves(_tokenIds);\n\n    // Assumes he currency Tokens are already received by contract, but not\n    // the Tokens Ids\n\n    // Remove liquidity for each Token ID in _tokenIds\n    for (uint256 i = 0; i < nTokens; i++) {\n      // Store current id and amount from argument arrays\n      uint256 idBought = _tokenIds[i];\n      uint256 amountBought = _tokensBoughtAmounts[i];\n      uint256 tokenReserve = tokenReserves[i];\n\n      require(amountBought > 0, \"NiftyswapExchange#_currencyToToken: NULL_TOKENS_BOUGHT\");\n\n      // Load currency token and Token _id reserves\n      uint256 currencyReserve = currencyReserves[idBought];\n\n      // Get amount of currency tokens to send for purchase\n      // Neither reserves amount have been changed so far in this transaction, so\n      // no adjustment to the inputs is needed\n      uint256 currencyAmount = getBuyPrice(amountBought, currencyReserve, tokenReserve);\n\n      // Calculate currency token amount to refund (if any) where whatever is not used will be returned\n      // Will throw if total cost exceeds _maxCurrency\n      totalRefundCurrency = totalRefundCurrency.sub(currencyAmount);\n\n      // Append Token id, Token id amount and currency token amount to tracking arrays\n      currencySold[i] = currencyAmount;\n\n      // Update individual currency reseve amount\n      currencyReserves[idBought] = currencyReserve.add(currencyAmount);\n    }\n\n    // Refund currency token if any\n    if (totalRefundCurrency > 0) {\n      currency.safeTransferFrom(address(this), _recipient, currencyID, totalRefundCurrency, \"\");\n    }\n\n    // Send Tokens all tokens purchased\n    token.safeBatchTransferFrom(address(this), _recipient, _tokenIds, _tokensBoughtAmounts, \"\");\n    return currencySold;\n  }\n\n  /**\n   * @dev Pricing function used for converting between currency token to Tokens.\n   * @param _assetBoughtAmount  Amount of Tokens being bought.\n   * @param _assetSoldReserve   Amount of currency tokens in exchange reserves.\n   * @param _assetBoughtReserve Amount of Tokens (output type) in exchange reserves.\n   * @return price Amount of currency tokens to send to Niftyswap.\n   */\n  function getBuyPrice(\n    uint256 _assetBoughtAmount,\n    uint256 _assetSoldReserve,\n    uint256 _assetBoughtReserve)\n    override public pure returns (uint256 price)\n  {\n    // Reserves must not be empty\n    require(_assetSoldReserve > 0 && _assetBoughtReserve > 0, \"NiftyswapExchange#getBuyPrice: EMPTY_RESERVE\");\n\n    // Calculate price with fee\n    uint256 numerator = _assetSoldReserve.mul(_assetBoughtAmount).mul(1000);\n    uint256 denominator = (_assetBoughtReserve.sub(_assetBoughtAmount)).mul(FEE_MULTIPLIER);\n    (price, ) = divRound(numerator, denominator);\n    return price; // Will add 1 if rounding error\n  }\n\n  /**\n   * @notice Convert Tokens _id to currency tokens and transfers Tokens to recipient.\n   * @dev User specifies EXACT Tokens _id sold and MINIMUM currency tokens received.\n   * @dev Assumes that all trades will be valid, or the whole tx will fail\n   * @dev Sorting _tokenIds is mandatory for efficient way of preventing duplicated IDs (which would lead to errors)\n   * @param _tokenIds          Array of Token IDs that are sold\n   * @param _tokensSoldAmounts Array of Amount of Tokens sold for each id in _tokenIds.\n   * @param _minCurrency       Minimum amount of currency tokens to receive\n   * @param _deadline          Timestamp after which this transaction will be reverted\n   * @param _recipient         The address that receives output currency tokens.\n   * @return currencyBought How much currency was actually purchased.\n   */\n  function _tokenToCurrency(\n    uint256[] memory _tokenIds,\n    uint256[] memory _tokensSoldAmounts,\n    uint256 _minCurrency,\n    uint256 _deadline,\n    address _recipient)\n    internal nonReentrant() returns (uint256[] memory currencyBought)\n  {\n    // Number of Token IDs to deposit\n    uint256 nTokens = _tokenIds.length;\n\n    // Input validation\n    require(_deadline >= block.timestamp, \"NiftyswapExchange#_tokenToCurrency: DEADLINE_EXCEEDED\");\n\n    // Initialize variables\n    uint256 totalCurrency = 0; // Total amount of currency tokens to transfer\n    currencyBought = new uint256[](nTokens);\n    uint256[] memory tokenReserves = new uint256[](nTokens);\n\n    // Get token reserves\n    tokenReserves = _getTokenReserves(_tokenIds);\n\n    // Assumes the Tokens ids are already received by contract, but not\n    // the Tokens Ids. Will return cards not sold if invalid price.\n\n    // Remove liquidity for each Token ID in _tokenIds\n    for (uint256 i = 0; i < nTokens; i++) {\n      // Store current id and amount from argument arrays\n      uint256 idSold = _tokenIds[i];\n      uint256 amountSold = _tokensSoldAmounts[i];\n      uint256 tokenReserve = tokenReserves[i];\n\n      // If 0 tokens send for this ID, revert\n      require(amountSold > 0, \"NiftyswapExchange#_tokenToCurrency: NULL_TOKENS_SOLD\");\n\n      // Load currency token and Token _id reserves\n      uint256 currencyReserve = currencyReserves[idSold];\n\n      // Get amount of currency that will be received\n      // Need to sub amountSold because tokens already added in reserve, which would bias the calculation\n      // Don't need to add it for currencyReserve because the amount is added after this calculation\n      uint256 currencyAmount = getSellPrice(amountSold, tokenReserve.sub(amountSold), currencyReserve);\n\n      // Increase cost of transaction\n      totalCurrency = totalCurrency.add(currencyAmount);\n\n      // Update individual currency reseve amount\n      currencyReserves[idSold] = currencyReserve.sub(currencyAmount);\n\n      // Append Token id, Token id amount and currency token amount to tracking arrays\n      currencyBought[i] = currencyAmount;\n    }\n\n    // If minCurrency is not met\n    require(totalCurrency >= _minCurrency, \"NiftyswapExchange#_tokenToCurrency: INSUFFICIENT_CURRENCY_AMOUNT\");\n\n    // Transfer currency here\n    currency.safeTransferFrom(address(this), _recipient, currencyID, totalCurrency, \"\");\n\n    return currencyBought;\n  }\n\n  /**\n   * @dev Pricing function used for converting Tokens to currency token.\n   * @param _assetSoldAmount    Amount of Tokens being sold.\n   * @param _assetSoldReserve   Amount of Tokens in exchange reserves.\n   * @param _assetBoughtReserve Amount of currency tokens in exchange reserves.\n   * @return price Amount of currency tokens to receive from Niftyswap.\n   */\n  function getSellPrice(\n    uint256 _assetSoldAmount,\n    uint256 _assetSoldReserve,\n    uint256 _assetBoughtReserve)\n    override public pure returns (uint256 price)\n  {\n    //Reserves must not be empty\n    require(_assetSoldReserve > 0 && _assetBoughtReserve > 0, \"NiftyswapExchange#getSellPrice: EMPTY_RESERVE\");\n\n    // Calculate amount to receive (with fee)\n    uint256 _assetSoldAmount_withFee = _assetSoldAmount.mul(FEE_MULTIPLIER);\n    uint256 numerator = _assetSoldAmount_withFee.mul(_assetBoughtReserve);\n    uint256 denominator = _assetSoldReserve.mul(1000).add(_assetSoldAmount_withFee);\n    return numerator / denominator; //Rounding errors will favor Niftyswap, so nothing to do\n  }\n\n  /***********************************|\n  |        Liquidity Functions        |\n  |__________________________________*/\n\n  /**\n   * @notice Deposit less than max currency tokens && exact Tokens (token ID) at current ratio to mint liquidity pool tokens.\n   * @dev min_liquidity does nothing when total liquidity pool token supply is 0.\n   * @dev Assumes that sender approved this contract on the currency\n   * @dev Sorting _tokenIds is mandatory for efficient way of preventing duplicated IDs (which would lead to errors)\n   * @param _provider      Address that provides liquidity to the reserve\n   * @param _tokenIds      Array of Token IDs where liquidity is added\n   * @param _tokenAmounts  Array of amount of Tokens deposited corresponding to each ID provided in _tokenIds\n   * @param _maxCurrency   Array of maximum number of tokens deposited for each ID provided in _tokenIds.\n   *                       Deposits max amount if total liquidity pool token supply is 0.\n   * @param _deadline      Timestamp after which this transaction will be reverted\n   */\n  function _addLiquidity(\n    address _provider,\n    uint256[] memory _tokenIds,\n    uint256[] memory _tokenAmounts,\n    uint256[] memory _maxCurrency,\n    uint256 _deadline)\n    internal nonReentrant()\n  {\n    // Requirements\n    require(_deadline >= block.timestamp, \"NiftyswapExchange#_addLiquidity: DEADLINE_EXCEEDED\");\n\n    // Initialize variables\n    uint256 nTokens = _tokenIds.length; // Number of Token IDs to deposit\n    uint256 totalCurrency = 0;          // Total amount of currency tokens to transfer\n\n    // Initialize arrays\n    uint256[] memory liquiditiesToMint = new uint256[](nTokens);\n    uint256[] memory currencyAmounts = new uint256[](nTokens);\n    uint256[] memory tokenReserves = new uint256[](nTokens);\n\n    // Get token reserves\n    tokenReserves = _getTokenReserves(_tokenIds);\n\n    // Assumes tokens _ids are deposited already, but not currency tokens\n    // as this is calculated and executed below.\n\n    // Loop over all Token IDs to deposit\n    for (uint256 i = 0; i < nTokens; i ++) {\n      // Store current id and amount from argument arrays\n      uint256 tokenId = _tokenIds[i];\n      uint256 amount = _tokenAmounts[i];\n\n      // Check if input values are acceptable\n      require(_maxCurrency[i] > 0, \"NiftyswapExchange#_addLiquidity: NULL_MAX_CURRENCY\");\n      require(amount > 0, \"NiftyswapExchange#_addLiquidity: NULL_TOKENS_AMOUNT\");\n\n      // If the token contract and currency contract are the same, prevent the creation\n      // of a currency pool.\n      if (currencyPoolBanned) {\n        require(tokenId != currencyID, \"NiftyswapExchange#_addLiquidity: CURRENCY_POOL_FORBIDDEN\");\n      }\n\n      // Current total liquidity calculated in currency token\n      uint256 totalLiquidity = totalSupplies[tokenId];\n\n      // When reserve for this token already exists\n      if (totalLiquidity > 0) {\n\n        // Load currency token and Token reserve's supply of Token id\n        uint256 currencyReserve = currencyReserves[tokenId]; // Amount not yet in reserve\n        uint256 tokenReserve = tokenReserves[i];\n\n        /**\n        * Amount of currency tokens to send to token id reserve:\n        * X/Y = dx/dy\n        * dx = X*dy/Y\n        * where\n        *   X:  currency total liquidity\n        *   Y:  Token _id total liquidity (before tokens were received)\n        *   dy: Amount of token _id deposited\n        *   dx: Amount of currency to deposit\n        *\n        * Adding .add(1) if rounding errors so to not favor users incorrectly\n        */\n        (uint256 currencyAmount, bool rounded) = divRound(amount.mul(currencyReserve), tokenReserve.sub(amount));\n        require(_maxCurrency[i] >= currencyAmount, \"NiftyswapExchange#_addLiquidity: MAX_CURRENCY_AMOUNT_EXCEEDED\");\n\n        // Update currency reserve size for Token id before transfer\n        currencyReserves[tokenId] = currencyReserve.add(currencyAmount);\n\n        // Update totalCurrency\n        totalCurrency = totalCurrency.add(currencyAmount);\n\n        // Proportion of the liquidity pool to give to current liquidity provider\n        // If rounding error occured, round down to favor previous liquidity providers\n        // See https://github.com/0xsequence/niftyswap/issues/19\n        liquiditiesToMint[i] = (currencyAmount.sub(rounded ? 1 : 0)).mul(totalLiquidity) / currencyReserve;\n        currencyAmounts[i] = currencyAmount;\n\n        // Mint liquidity ownership tokens and increase liquidity supply accordingly\n        totalSupplies[tokenId] = totalLiquidity.add(liquiditiesToMint[i]);\n\n      } else {\n        uint256 maxCurrency = _maxCurrency[i];\n\n        // Otherwise rounding error could end up being significant on second deposit\n        require(maxCurrency >= 1000000000, \"NiftyswapExchange#_addLiquidity: INVALID_CURRENCY_AMOUNT\");\n\n        // Update currency  reserve size for Token id before transfer\n        currencyReserves[tokenId] = maxCurrency;\n\n        // Update totalCurrency\n        totalCurrency = totalCurrency.add(maxCurrency);\n\n        // Initial liquidity is amount deposited (Incorrect pricing will be arbitraged)\n        // uint256 initialLiquidity = _maxCurrency;\n        totalSupplies[tokenId] = maxCurrency;\n\n        // Liquidity to mints\n        liquiditiesToMint[i] = maxCurrency;\n        currencyAmounts[i] = maxCurrency;\n      }\n    }\n\n    // Mint liquidity pool tokens\n    _batchMint(_provider, _tokenIds, liquiditiesToMint, \"\");\n\n    // Transfer all currency to this contract\n    currency.safeTransferFrom(_provider, address(this), currencyID, totalCurrency, abi.encode(DEPOSIT_SIG));\n\n    // Emit event\n    emit LiquidityAdded(_provider, _tokenIds, _tokenAmounts, currencyAmounts);\n  }\n\n  /**\n   * @dev Burn liquidity pool tokens to withdraw currency  && Tokens at current ratio.\n   * @dev Sorting _tokenIds is mandatory for efficient way of preventing duplicated IDs (which would lead to errors)\n   * @param _provider         Address that removes liquidity to the reserve\n   * @param _tokenIds         Array of Token IDs where liquidity is removed\n   * @param _poolTokenAmounts Array of Amount of liquidity pool tokens burned for each Token id in _tokenIds.\n   * @param _minCurrency      Minimum currency withdrawn for each Token id in _tokenIds.\n   * @param _minTokens        Minimum Tokens id withdrawn for each Token id in _tokenIds.\n   * @param _deadline         Timestamp after which this transaction will be reverted\n   */\n  function _removeLiquidity(\n    address _provider,\n    uint256[] memory _tokenIds,\n    uint256[] memory _poolTokenAmounts,\n    uint256[] memory _minCurrency,\n    uint256[] memory _minTokens,\n    uint256 _deadline)\n    internal nonReentrant()\n  {\n    // Input validation\n    require(_deadline > block.timestamp, \"NiftyswapExchange#_removeLiquidity: DEADLINE_EXCEEDED\");\n\n    // Initialize variables\n    uint256 nTokens = _tokenIds.length;                        // Number of Token IDs to deposit\n    uint256 totalCurrency = 0;                                 // Total amount of currency  to transfer\n    uint256[] memory tokenAmounts = new uint256[](nTokens);    // Amount of Tokens to transfer for each id\n    uint256[] memory currencyAmounts = new uint256[](nTokens); // Amount of currency to transfer for each id\n    uint256[] memory tokenReserves = new uint256[](nTokens);\n\n    // Get token reserves\n    tokenReserves = _getTokenReserves(_tokenIds);\n\n    // Assumes NITFY liquidity tokens are already received by contract, but not\n    // the currency  nor the Tokens Ids\n\n    // Remove liquidity for each Token ID in _tokenIds\n    for (uint256 i = 0; i < nTokens; i++) {\n      // Store current id and amount from argument arrays\n      uint256 id = _tokenIds[i];\n      uint256 amountPool = _poolTokenAmounts[i];\n      uint256 tokenReserve = tokenReserves[i];\n\n      // Load total liquidity pool token supply for Token _id\n      uint256 totalLiquidity = totalSupplies[id];\n      require(totalLiquidity > 0, \"NiftyswapExchange#_removeLiquidity: NULL_TOTAL_LIQUIDITY\");\n\n      // Load currency and Token reserve's supply of Token id\n      uint256 currencyReserve = currencyReserves[id];\n\n      // Calculate amount to withdraw for currency  and Token _id\n      uint256 currencyAmount = amountPool.mul(currencyReserve) / totalLiquidity;\n      uint256 tokenAmount = amountPool.mul(tokenReserve) / totalLiquidity;\n\n      // Verify if amounts to withdraw respect minimums specified\n      require(currencyAmount >= _minCurrency[i], \"NiftyswapExchange#_removeLiquidity: INSUFFICIENT_CURRENCY_AMOUNT\");\n      require(tokenAmount >= _minTokens[i], \"NiftyswapExchange#_removeLiquidity: INSUFFICIENT_TOKENS\");\n\n      // Update total liquidity pool token supply of Token _id\n      totalSupplies[id] = totalLiquidity.sub(amountPool);\n\n      // Update currency reserve size for Token id\n      currencyReserves[id] = currencyReserve.sub(currencyAmount);\n\n      // Update totalCurrency and tokenAmounts\n      totalCurrency = totalCurrency.add(currencyAmount);\n      tokenAmounts[i] = tokenAmount;\n      currencyAmounts[i] = currencyAmount;\n    }\n\n    // Burn liquidity pool tokens for offchain supplies\n    _batchBurn(address(this), _tokenIds, _poolTokenAmounts);\n\n    // Transfer total currency  and all Tokens ids\n    currency.safeTransferFrom(address(this), _provider, currencyID, totalCurrency, \"\");\n    token.safeBatchTransferFrom(address(this), _provider, _tokenIds, tokenAmounts, \"\");\n\n    // Emit event\n    emit LiquidityRemoved(_provider, _tokenIds, tokenAmounts, currencyAmounts);\n  }\n\n  /***********************************|\n  |     Receiver Methods Handler      |\n  |__________________________________*/\n\n  // Method signatures for onReceive control logic\n\n  // bytes4(keccak256(\n  //   \"_currencyToToken(uint256[],uint256[],uint256,uint256,address)\"\n  // ));\n  bytes4 internal constant BUYTOKENS_SIG = 0xb2d81047;\n\n  // bytes4(keccak256(\n  //   \"_tokenToCurrency(uint256[],uint256[],uint256,uint256,address)\"\n  // ));\n  bytes4 internal constant SELLTOKENS_SIG = 0xdb08ec97;\n\n  //  bytes4(keccak256(\n  //   \"_addLiquidity(address,uint256[],uint256[],uint256[],uint256)\"\n  // ));\n  bytes4 internal constant ADDLIQUIDITY_SIG = 0x82da2b73;\n\n  // bytes4(keccak256(\n  //    \"_removeLiquidity(address,uint256[],uint256[],uint256[],uint256[],uint256)\"\n  // ));\n  bytes4 internal constant REMOVELIQUIDITY_SIG = 0x5c0bf259;\n\n  // bytes4(keccak256(\n  //   \"DepositTokens()\"\n  // ));\n  bytes4 internal constant DEPOSIT_SIG = 0xc8c323f9;\n\n  /**\n   * @notice Handle which method is being called on transfer\n   * @dev `_data` must be encoded as follow: abi.encode(bytes4, MethodObj)\n   *   where bytes4 argument is the MethodObj object signature passed as defined\n   *   in the `Signatures for onReceive control logic` section above\n   * @param _from     The address which previously owned the Token\n   * @param _ids      An array containing ids of each Token being transferred\n   * @param _amounts  An array containing amounts of each Token being transferred\n   * @param _data     Method signature and corresponding encoded arguments for method to call on *this* contract\n   * @return bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\")\n   */\n  function onERC1155BatchReceived(\n    address, // _operator,\n    address _from,\n    uint256[] memory _ids,\n    uint256[] memory _amounts,\n    bytes memory _data)\n    override public returns(bytes4)\n  {\n    // This function assumes that the ERC-1155 token contract can\n    // only call `onERC1155BatchReceived()` via a valid token transfer.\n    // Users must be responsible and only use this Niftyswap exchange\n    // contract with ERC-1155 compliant token contracts.\n\n    // Obtain method to call via object signature\n    bytes4 functionSignature = abi.decode(_data, (bytes4));\n\n    /***********************************|\n    |           Buying Tokens           |\n    |__________________________________*/\n\n    if (functionSignature == BUYTOKENS_SIG) {\n      // Tokens received need to be currency contract\n      require(msg.sender == address(currency), \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_TRANSFERRED\");\n      require(_ids.length == 1, \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_IDS_AMOUNT\");\n      require(_ids[0] == currencyID, \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_ID\");\n\n      // Decode BuyTokensObj from _data to call _currencyToToken()\n      BuyTokensObj memory obj;\n      (, obj) = abi.decode(_data, (bytes4, BuyTokensObj));\n      address recipient = obj.recipient == address(0x0) ? _from : obj.recipient;\n\n      // Execute trade and retrieve amount of currency spent\n      uint256[] memory currencySold = _currencyToToken(obj.tokensBoughtIDs, obj.tokensBoughtAmounts, _amounts[0], obj.deadline, recipient);\n      emit TokensPurchase(_from, recipient, obj.tokensBoughtIDs, obj.tokensBoughtAmounts, currencySold);\n\n    /***********************************|\n    |           Selling Tokens          |\n    |__________________________________*/\n\n    } else if (functionSignature == SELLTOKENS_SIG) {\n\n      // Tokens received need to be Token contract\n      require(msg.sender == address(token), \"NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKENS_TRANSFERRED\");\n\n      // Decode SellTokensObj from _data to call _tokenToCurrency()\n      SellTokensObj memory obj;\n      (, obj) = abi.decode(_data, (bytes4, SellTokensObj));\n      address recipient = obj.recipient == address(0x0) ? _from : obj.recipient;\n\n      // Execute trade and retrieve amount of currency received\n      uint256[] memory currencyBought = _tokenToCurrency(_ids, _amounts, obj.minCurrency, obj.deadline, recipient);\n      emit CurrencyPurchase(_from, recipient, _ids, _amounts, currencyBought);\n\n    /***********************************|\n    |      Adding Liquidity Tokens      |\n    |__________________________________*/\n\n    } else if (functionSignature == ADDLIQUIDITY_SIG) {\n      // Only allow to receive ERC-1155 tokens from `token` contract\n      require(msg.sender == address(token), \"NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKEN_TRANSFERRED\");\n\n      // Decode AddLiquidityObj from _data to call _addLiquidity()\n      AddLiquidityObj memory obj;\n      (, obj) = abi.decode(_data, (bytes4, AddLiquidityObj));\n      _addLiquidity(_from, _ids, _amounts, obj.maxCurrency, obj.deadline);\n\n    /***********************************|\n    |      Removing iquidity Tokens     |\n    |__________________________________*/\n\n    } else if (functionSignature == REMOVELIQUIDITY_SIG) {\n      // Tokens received need to be NIFTY-1155 tokens\n      require(msg.sender == address(this), \"NiftyswapExchange#onERC1155BatchReceived: INVALID_NIFTY_TOKENS_TRANSFERRED\");\n\n      // Decode RemoveLiquidityObj from _data to call _removeLiquidity()\n      RemoveLiquidityObj memory obj;\n      (, obj) = abi.decode(_data, (bytes4, RemoveLiquidityObj));\n      _removeLiquidity(_from, _ids, _amounts, obj.minCurrency, obj.minTokens, obj.deadline);\n\n    /***********************************|\n    |      Deposits & Invalid Calls     |\n    |__________________________________*/\n\n    } else if (functionSignature == DEPOSIT_SIG) {\n      // Do nothing for when contract is self depositing\n      // This could be use to deposit currency \"by accident\", which would be locked\n      require(msg.sender == address(currency), \"NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKENS_DEPOSITED\");\n      require(_ids[0] == currencyID, \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_ID\");\n\n    } else {\n      revert(\"NiftyswapExchange#onERC1155BatchReceived: INVALID_METHOD\");\n    }\n\n    return ERC1155_BATCH_RECEIVED_VALUE;\n  }\n\n  /**\n   * @dev Will pass to onERC115Batch5Received\n   */\n  function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _amount, bytes memory _data)\n    override public returns(bytes4)\n  {\n    uint256[] memory ids = new uint256[](1);\n    uint256[] memory amounts = new uint256[](1);\n\n    ids[0] = _id;\n    amounts[0] = _amount;\n\n    require(\n      ERC1155_BATCH_RECEIVED_VALUE == onERC1155BatchReceived(_operator, _from, ids, amounts, _data),\n      \"NiftyswapExchange#onERC1155Received: INVALID_ONRECEIVED_MESSAGE\"\n    );\n\n    return ERC1155_RECEIVED_VALUE;\n  }\n\n  /**\n   * @notice Prevents receiving Ether or calls to unsuported methods\n   */\n  fallback () external {\n    revert(\"NiftyswapExchange:UNSUPPORTED_METHOD\");\n  }\n\n  /***********************************|\n  |         Getter Functions          |\n  |__________________________________*/\n\n  /**\n   * @notice Get amount of currency in reserve for each Token _id in _ids\n   * @param _ids Array of ID sto query currency reserve of\n   * @return amount of currency in reserve for each Token _id\n   */\n  function getCurrencyReserves(\n    uint256[] calldata _ids)\n    override external view returns (uint256[] memory)\n  {\n    uint256 nIds = _ids.length;\n    uint256[] memory currencyReservesReturn = new uint256[](nIds);\n    for (uint256 i = 0; i < nIds; i++) {\n      currencyReservesReturn[i] = currencyReserves[_ids[i]];\n    }\n    return currencyReservesReturn;\n  }\n\n  /**\n   * @notice Return price for `currency => Token _id` trades with an exact token amount.\n   * @param _ids           Array of ID of tokens bought.\n   * @param _tokensBought Amount of Tokens bought.\n   * @return Amount of currency needed to buy Tokens in _ids for amounts in _tokensBought\n   */\n  function getPrice_currencyToToken(\n    uint256[] calldata _ids,\n    uint256[] calldata _tokensBought)\n    override external view returns (uint256[] memory)\n  {\n    uint256 nIds = _ids.length;\n    uint256[] memory prices = new uint256[](nIds);\n\n    for (uint256 i = 0; i < nIds; i++) {\n      // Load Token id reserve\n      uint256 tokenReserve = token.balanceOf(address(this), _ids[i]);\n      prices[i] = getBuyPrice(_tokensBought[i], currencyReserves[_ids[i]], tokenReserve);\n    }\n\n    // Return prices\n    return prices;\n  }\n\n  /**\n   * @notice Return price for `Token _id => currency` trades with an exact token amount.\n   * @param _ids        Array of IDs  token sold.\n   * @param _tokensSold Array of amount of each Token sold.\n   * @return Amount of currency that can be bought for Tokens in _ids for amounts in _tokensSold\n   */\n  function getPrice_tokenToCurrency(\n    uint256[] calldata _ids,\n    uint256[] calldata _tokensSold)\n    override external view returns (uint256[] memory)\n  {\n    uint256 nIds = _ids.length;\n    uint256[] memory prices = new uint256[](nIds);\n\n    for (uint256 i = 0; i < nIds; i++) {\n      // Load Token id reserve\n      uint256 tokenReserve = token.balanceOf(address(this), _ids[i]);\n      prices[i] = getSellPrice(_tokensSold[i], tokenReserve, currencyReserves[_ids[i]]);\n    }\n\n    // Return price\n    return prices;\n  }\n\n  /**\n   * @return Address of Token that is sold on this exchange.\n   */\n  function getTokenAddress() override external view returns (address) {\n    return address(token);\n  }\n\n  /**\n   * @return Address of the currency contract that is used as currency and its corresponding id\n   */\n  function getCurrencyInfo() override external view returns (address, uint256) {\n    return (address(currency), currencyID);\n  }\n\n  /**\n   * @notice Get total supply of liquidity tokens\n   * @param _ids ID of the Tokens\n   * @return The total supply of each liquidity token id provided in _ids\n   */\n  function getTotalSupply(uint256[] calldata _ids)\n    override external view returns (uint256[] memory)\n  {\n    // Number of ids\n    uint256 nIds = _ids.length;\n\n    // Variables\n    uint256[] memory batchTotalSupplies = new uint256[](nIds);\n\n    // Iterate over each owner and token ID\n    for (uint256 i = 0; i < nIds; i++) {\n      batchTotalSupplies[i] = totalSupplies[_ids[i]];\n    }\n\n    return batchTotalSupplies;\n  }\n\n  /**\n   * @return Address of factory that created this exchange.\n   */\n  function getFactoryAddress() override external view returns (address) {\n    return factory;\n  }\n\n  /***********************************|\n  |         Utility Functions         |\n  |__________________________________*/\n\n  /**\n   * @notice Divides two numbers and add 1 if there is a rounding error\n   * @param a Numerator\n   * @param b Denominator\n   */\n  function divRound(uint256 a, uint256 b) internal pure returns (uint256, bool) {\n    return a % b == 0 ? (a/b, false) : ((a/b).add(1), true);\n  }\n\n  /**\n   * @notice Return Token reserves for given Token ids\n   * @dev Assumes that ids are sorted from lowest to highest with no duplicates.\n   *      This assumption allows for checking the token reserves only once, otherwise\n   *      token reserves need to be re-checked individually or would have to do more expensive\n   *      duplication checks.\n   * @param _tokenIds Array of IDs to query their Reserve balance.\n   * @return Array of Token ids' reserves\n   */\n  function _getTokenReserves(\n    uint256[] memory _tokenIds)\n    internal view returns (uint256[] memory)\n  {\n    uint256 nTokens = _tokenIds.length;\n\n    // Regular balance query if only 1 token, otherwise batch query\n    if (nTokens == 1) {\n      uint256[] memory tokenReserves = new uint256[](1);\n      tokenReserves[0] = token.balanceOf(address(this), _tokenIds[0]);\n      return tokenReserves;\n\n    } else {\n      // Lazy check preventing duplicates & build address array for query\n      address[] memory thisAddressArray = new address[](nTokens);\n      thisAddressArray[0] = address(this);\n\n      for (uint256 i = 1; i < nTokens; i++) {\n        require(_tokenIds[i-1] < _tokenIds[i], \"NiftyswapExchange#_getTokenReserves: UNSORTED_OR_DUPLICATE_TOKEN_IDS\");\n        thisAddressArray[i] = address(this);\n      }\n      return token.balanceOfBatch(thisAddressArray, _tokenIds);\n    }\n  }\n\n  /**\n   * @notice Indicates whether a contract implements the `ERC1155TokenReceiver` functions and so can accept ERC1155 token types.\n   * @param  interfaceID The ERC-165 interface ID that is queried for support.s\n   * @dev This function MUST return true if it implements the ERC1155TokenReceiver interface and ERC-165 interface.\n   *      This function MUST NOT consume more thsan 5,000 gas.\n   * @return Whether a given interface is supported\n   */\n  function supportsInterface(bytes4 interfaceID) public override pure returns (bool) {\n    return  interfaceID == type(IERC165).interfaceId ||\n      interfaceID == type(IERC1155).interfaceId || \n      interfaceID == type(IERC1155TokenReceiver).interfaceId;        \n  }\n\n}\n"
      },
      "contracts/interfaces/INiftyswapExchange.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\ninterface INiftyswapExchange {\n\n  /***********************************|\n  |               Events              |\n  |__________________________________*/\n\n  event TokensPurchase(\n    address indexed buyer,\n    address indexed recipient,\n    uint256[] tokensBoughtIds,\n    uint256[] tokensBoughtAmounts,\n    uint256[] currencySoldAmounts\n  );\n\n  event CurrencyPurchase(\n    address indexed buyer,\n    address indexed recipient,\n    uint256[] tokensSoldIds,\n    uint256[] tokensSoldAmounts,\n    uint256[] currencyBoughtAmounts\n  );\n\n  event LiquidityAdded(\n    address indexed provider,\n    uint256[] tokenIds,\n    uint256[] tokenAmounts,\n    uint256[] currencyAmounts\n  );\n\n  event LiquidityRemoved(\n    address indexed provider,\n    uint256[] tokenIds,\n    uint256[] tokenAmounts,\n    uint256[] currencyAmounts\n  );\n\n    // OnReceive Objects\n  struct BuyTokensObj {\n    address recipient;             // Who receives the tokens\n    uint256[] tokensBoughtIDs;     // Token IDs to buy\n    uint256[] tokensBoughtAmounts; // Amount of token to buy for each ID\n    uint256 deadline;              // Timestamp after which the tx isn't valid anymore\n  }\n\n  struct SellTokensObj {\n    address recipient;   // Who receives the currency\n    uint256 minCurrency; // Total minimum number of currency  expected for all tokens sold\n    uint256 deadline;    // Timestamp after which the tx isn't valid anymore\n  }\n\n  struct AddLiquidityObj {\n    uint256[] maxCurrency; // Maximum number of currency to deposit with tokens\n    uint256 deadline;      // Timestamp after which the tx isn't valid anymore\n  }\n\n  struct RemoveLiquidityObj {\n    uint256[] minCurrency; // Minimum number of currency to withdraw\n    uint256[] minTokens;   // Minimum number of tokens to withdraw\n    uint256 deadline;      // Timestamp after which the tx isn't valid anymore\n  }\n\n  /***********************************|\n  |        OnReceive Functions        |\n  |__________________________________*/\n\n  /**\n   * @notice Handle which method is being called on Token transfer\n   * @dev `_data` must be encoded as follow: abi.encode(bytes4, MethodObj)\n   *   where bytes4 argument is the MethodObj object signature passed as defined\n   *   in the `Signatures for onReceive control logic` section above\n   * @param _operator The address which called the `safeTransferFrom` function\n   * @param _from     The address which previously owned the token\n   * @param _id       The id of the token being transferred\n   * @param _amount   The amount of tokens being transferred\n   * @param _data     Method signature and corresponding encoded arguments for method to call on *this* contract\n   * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n   */\n  function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _amount, bytes calldata _data) external returns(bytes4);\n\n  /**\n   * @notice Handle which method is being called on transfer\n   * @dev `_data` must be encoded as follow: abi.encode(bytes4, MethodObj)\n   *   where bytes4 argument is the MethodObj object signature passed as defined\n   *   in the `Signatures for onReceive control logic` section above\n   * @param _from     The address which previously owned the Token\n   * @param _ids      An array containing ids of each Token being transferred\n   * @param _amounts  An array containing amounts of each Token being transferred\n   * @param _data     Method signature and corresponding encoded arguments for method to call on *this* contract\n   * @return bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\")\n   */\n  function onERC1155BatchReceived(address, address _from, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external returns(bytes4);\n\n\n  /***********************************|\n  |         Getter Functions          |\n  |__________________________________*/\n\n  /**\n   * @dev Pricing function used for converting between currency token to Tokens.\n   * @param _assetBoughtAmount  Amount of Tokens being bought.\n   * @param _assetSoldReserve   Amount of currency tokens in exchange reserves.\n   * @param _assetBoughtReserve Amount of Tokens (output type) in exchange reserves.\n   * @return Amount of currency tokens to send to Niftyswap.\n   */\n  function getBuyPrice(uint256 _assetBoughtAmount, uint256 _assetSoldReserve, uint256 _assetBoughtReserve) external pure returns (uint256);\n\n  /**\n   * @dev Pricing function used for converting Tokens to currency token.\n   * @param _assetSoldAmount    Amount of Tokens being sold.\n   * @param _assetSoldReserve   Amount of Tokens in exchange reserves.\n   * @param _assetBoughtReserve Amount of currency tokens in exchange reserves.\n   * @return Amount of currency tokens to receive from Niftyswap.\n   */\n  function getSellPrice(uint256 _assetSoldAmount,uint256 _assetSoldReserve, uint256 _assetBoughtReserve) external pure returns (uint256);\n\n  /**\n   * @notice Get amount of currency in reserve for each Token _id in _ids\n   * @param _ids Array of ID sto query currency reserve of\n   * @return amount of currency in reserve for each Token _id\n   */\n  function getCurrencyReserves(uint256[] calldata _ids) external view returns (uint256[] memory);\n\n  /**\n   * @notice Return price for `currency => Token _id` trades with an exact token amount.\n   * @param _ids          Array of ID of tokens bought.\n   * @param _tokensBought Amount of Tokens bought.\n   * @return Amount of currency needed to buy Tokens in _ids for amounts in _tokensBought\n   */\n  function getPrice_currencyToToken(uint256[] calldata _ids, uint256[] calldata _tokensBought) external view returns (uint256[] memory);\n\n  /**\n   * @notice Return price for `Token _id => currency` trades with an exact token amount.\n   * @param _ids        Array of IDs  token sold.\n   * @param _tokensSold Array of amount of each Token sold.\n   * @return Amount of currency that can be bought for Tokens in _ids for amounts in _tokensSold\n   */\n  function getPrice_tokenToCurrency(uint256[] calldata _ids, uint256[] calldata _tokensSold) external view returns (uint256[] memory);\n\n  /**\n   * @notice Get total supply of liquidity tokens\n   * @param _ids ID of the Tokens\n   * @return The total supply of each liquidity token id provided in _ids\n   */\n  function getTotalSupply(uint256[] calldata _ids) external view returns (uint256[] memory);\n\n  /**\n   * @return Address of Token that is sold on this exchange.\n   */\n  function getTokenAddress() external view returns (address);\n\n  /**\n   * @return Address of the currency contract that is used as currency and its corresponding id\n   */\n  function getCurrencyInfo() external view returns (address, uint256);\n\n  /**\n   * @return Address of factory that created this exchange.\n   */\n  function getFactoryAddress() external view returns (address);\n\n}"
      },
      "contracts/utils/ReentrancyGuard.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * _Since v2.5.0:_ this module is now much more gas efficient, given net gas\n * metering changes introduced in the Istanbul hardfork.\n */\ncontract ReentrancyGuard {\n  bool private _notEntered;\n\n  constructor () {\n    // Storing an initial non-zero value makes deployment a bit more\n    // expensive, but in exchange the refund on every call to nonReentrant\n    // will be lower in amount. Since refunds are capped to a percetange of\n    // the total transaction's gas, it is best to keep them low in cases\n    // like this one, to increase the likelihood of the full refund coming\n    // into effect.\n    _notEntered = true;\n  }\n\n  /**\n   * @dev Prevents a contract from calling itself, directly or indirectly.\n   * Calling a `nonReentrant` function from another `nonReentrant`\n   * function is not supported. It is possible to prevent this from happening\n   * by making the `nonReentrant` function external, and make it call a\n   * `private` function that does the actual work.\n   */\n  modifier nonReentrant() {\n    // On the first call to nonReentrant, _notEntered will be true\n    require(_notEntered, \"ReentrancyGuard: reentrant call\");\n\n    // Any calls to nonReentrant after this point will fail\n    _notEntered = false;\n\n    _;\n\n    // By storing the original value once again, a refund is triggered (see\n    // https://eips.ethereum.org/EIPS/eip-2200)\n    _notEntered = true;\n  }\n}"
      },
      "multi-token-standard/contracts/interfaces/IERC165.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\n\n/**\n * @title ERC165\n * @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md\n */\ninterface IERC165 {\n\n    /**\n     * @notice Query if a contract implements an interface\n     * @dev Interface identification is specified in ERC-165. This function\n     * uses less than 30,000 gas\n     * @param _interfaceId The interface identifier, as specified in ERC-165\n     */\n    function supportsInterface(bytes4 _interfaceId)\n    external\n    view\n    returns (bool);\n}\n"
      },
      "multi-token-standard/contracts/interfaces/IERC1155.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\n\ninterface IERC1155 {\n\n  /****************************************|\n  |                 Events                 |\n  |_______________________________________*/\n\n  /**\n   * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning\n   *   Operator MUST be msg.sender\n   *   When minting/creating tokens, the `_from` field MUST be set to `0x0`\n   *   When burning/destroying tokens, the `_to` field MUST be set to `0x0`\n   *   The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the \"circulating supply\" for a given token ID\n   *   To broadcast the existence of a token ID with no initial balance, the contract SHOULD emit the TransferSingle event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0\n   */\n  event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _amount);\n\n  /**\n   * @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning\n   *   Operator MUST be msg.sender\n   *   When minting/creating tokens, the `_from` field MUST be set to `0x0`\n   *   When burning/destroying tokens, the `_to` field MUST be set to `0x0`\n   *   The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the \"circulating supply\" for a given token ID\n   *   To broadcast the existence of multiple token IDs with no initial balance, this SHOULD emit the TransferBatch event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0\n   */\n  event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _amounts);\n\n  /**\n   * @dev MUST emit when an approval is updated\n   */\n  event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);\n\n\n  /****************************************|\n  |                Functions               |\n  |_______________________________________*/\n\n  /**\n    * @notice Transfers amount of an _id from the _from address to the _to address specified\n    * @dev MUST emit TransferSingle event on success\n    * Caller must be approved to manage the _from account's tokens (see isApprovedForAll)\n    * MUST throw if `_to` is the zero address\n    * MUST throw if balance of sender for token `_id` is lower than the `_amount` sent\n    * MUST throw on any other error\n    * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155Received` on `_to` and revert if the return amount is not `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n    * @param _from    Source address\n    * @param _to      Target address\n    * @param _id      ID of the token type\n    * @param _amount  Transfered amount\n    * @param _data    Additional data with no specified format, sent in call to `_to`\n    */\n  function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes calldata _data) external;\n\n  /**\n    * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call)\n    * @dev MUST emit TransferBatch event on success\n    * Caller must be approved to manage the _from account's tokens (see isApprovedForAll)\n    * MUST throw if `_to` is the zero address\n    * MUST throw if length of `_ids` is not the same as length of `_amounts`\n    * MUST throw if any of the balance of sender for token `_ids` is lower than the respective `_amounts` sent\n    * MUST throw on any other error\n    * When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155BatchReceived` on `_to` and revert if the return amount is not `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n    * Transfers and events MUST occur in the array order they were submitted (_ids[0] before _ids[1], etc)\n    * @param _from     Source addresses\n    * @param _to       Target addresses\n    * @param _ids      IDs of each token type\n    * @param _amounts  Transfer amounts per token type\n    * @param _data     Additional data with no specified format, sent in call to `_to`\n  */\n  function safeBatchTransferFrom(address _from, address _to, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external;\n\n  /**\n   * @notice Get the balance of an account's Tokens\n   * @param _owner  The address of the token holder\n   * @param _id     ID of the Token\n   * @return        The _owner's balance of the Token type requested\n   */\n  function balanceOf(address _owner, uint256 _id) external view returns (uint256);\n\n  /**\n   * @notice Get the balance of multiple account/token pairs\n   * @param _owners The addresses of the token holders\n   * @param _ids    ID of the Tokens\n   * @return        The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair)\n   */\n  function balanceOfBatch(address[] calldata _owners, uint256[] calldata _ids) external view returns (uint256[] memory);\n\n  /**\n   * @notice Enable or disable approval for a third party (\"operator\") to manage all of caller's tokens\n   * @dev MUST emit the ApprovalForAll event on success\n   * @param _operator  Address to add to the set of authorized operators\n   * @param _approved  True if the operator is approved, false to revoke approval\n   */\n  function setApprovalForAll(address _operator, bool _approved) external;\n\n  /**\n   * @notice Queries the approval status of an operator for a given owner\n   * @param _owner     The owner of the Tokens\n   * @param _operator  Address of authorized operator\n   * @return isOperator True if the operator is approved, false if not\n   */\n  function isApprovedForAll(address _owner, address _operator) external view returns (bool isOperator);\n}\n"
      },
      "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\n/**\n * @dev ERC-1155 interface for accepting safe transfers.\n */\ninterface IERC1155TokenReceiver {\n\n  /**\n   * @notice Handle the receipt of a single ERC1155 token type\n   * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated\n   * This function MAY throw to revert and reject the transfer\n   * Return of other amount than the magic value MUST result in the transaction being reverted\n   * Note: The token contract address is always the message sender\n   * @param _operator  The address which called the `safeTransferFrom` function\n   * @param _from      The address which previously owned the token\n   * @param _id        The id of the token being transferred\n   * @param _amount    The amount of tokens being transferred\n   * @param _data      Additional data with no specified format\n   * @return           `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n   */\n  function onERC1155Received(address _operator, address _from, uint256 _id, uint256 _amount, bytes calldata _data) external returns(bytes4);\n\n  /**\n   * @notice Handle the receipt of multiple ERC1155 token types\n   * @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated\n   * This function MAY throw to revert and reject the transfer\n   * Return of other amount than the magic value WILL result in the transaction being reverted\n   * Note: The token contract address is always the message sender\n   * @param _operator  The address which called the `safeBatchTransferFrom` function\n   * @param _from      The address which previously owned the token\n   * @param _ids       An array containing ids of each token being transferred\n   * @param _amounts   An array containing amounts of each token being transferred\n   * @param _data      Additional data with no specified format\n   * @return           `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n   */\n  function onERC1155BatchReceived(address _operator, address _from, uint256[] calldata _ids, uint256[] calldata _amounts, bytes calldata _data) external returns(bytes4);\n}\n"
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155MintBurn.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\nimport \"./ERC1155.sol\";\n\n\n/**\n * @dev Multi-Fungible Tokens with minting and burning methods. These methods assume\n *      a parent contract to be executed as they are `internal` functions\n */\ncontract ERC1155MintBurn is ERC1155 {\n  using SafeMath for uint256;\n\n  /****************************************|\n  |            Minting Functions           |\n  |_______________________________________*/\n\n  /**\n   * @notice Mint _amount of tokens of a given id\n   * @param _to      The address to mint tokens to\n   * @param _id      Token id to mint\n   * @param _amount  The amount to be minted\n   * @param _data    Data to pass if receiver is contract\n   */\n  function _mint(address _to, uint256 _id, uint256 _amount, bytes memory _data)\n    internal\n  {\n    // Add _amount\n    balances[_to][_id] = balances[_to][_id].add(_amount);\n\n    // Emit event\n    emit TransferSingle(msg.sender, address(0x0), _to, _id, _amount);\n\n    // Calling onReceive method if recipient is contract\n    _callonERC1155Received(address(0x0), _to, _id, _amount, gasleft(), _data);\n  }\n\n  /**\n   * @notice Mint tokens for each ids in _ids\n   * @param _to       The address to mint tokens to\n   * @param _ids      Array of ids to mint\n   * @param _amounts  Array of amount of tokens to mint per id\n   * @param _data    Data to pass if receiver is contract\n   */\n  function _batchMint(address _to, uint256[] memory _ids, uint256[] memory _amounts, bytes memory _data)\n    internal\n  {\n    require(_ids.length == _amounts.length, \"ERC1155MintBurn#batchMint: INVALID_ARRAYS_LENGTH\");\n\n    // Number of mints to execute\n    uint256 nMint = _ids.length;\n\n     // Executing all minting\n    for (uint256 i = 0; i < nMint; i++) {\n      // Update storage balance\n      balances[_to][_ids[i]] = balances[_to][_ids[i]].add(_amounts[i]);\n    }\n\n    // Emit batch mint event\n    emit TransferBatch(msg.sender, address(0x0), _to, _ids, _amounts);\n\n    // Calling onReceive method if recipient is contract\n    _callonERC1155BatchReceived(address(0x0), _to, _ids, _amounts, gasleft(), _data);\n  }\n\n\n  /****************************************|\n  |            Burning Functions           |\n  |_______________________________________*/\n\n  /**\n   * @notice Burn _amount of tokens of a given token id\n   * @param _from    The address to burn tokens from\n   * @param _id      Token id to burn\n   * @param _amount  The amount to be burned\n   */\n  function _burn(address _from, uint256 _id, uint256 _amount)\n    internal\n  {\n    //Substract _amount\n    balances[_from][_id] = balances[_from][_id].sub(_amount);\n\n    // Emit event\n    emit TransferSingle(msg.sender, _from, address(0x0), _id, _amount);\n  }\n\n  /**\n   * @notice Burn tokens of given token id for each (_ids[i], _amounts[i]) pair\n   * @param _from     The address to burn tokens from\n   * @param _ids      Array of token ids to burn\n   * @param _amounts  Array of the amount to be burned\n   */\n  function _batchBurn(address _from, uint256[] memory _ids, uint256[] memory _amounts)\n    internal\n  {\n    // Number of mints to execute\n    uint256 nBurn = _ids.length;\n    require(nBurn == _amounts.length, \"ERC1155MintBurn#batchBurn: INVALID_ARRAYS_LENGTH\");\n\n    // Executing all minting\n    for (uint256 i = 0; i < nBurn; i++) {\n      // Update storage balance\n      balances[_from][_ids[i]] = balances[_from][_ids[i]].sub(_amounts[i]);\n    }\n\n    // Emit batch mint event\n    emit TransferBatch(msg.sender, _from, address(0x0), _ids, _amounts);\n  }\n}\n"
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\nimport \"../../utils/SafeMath.sol\";\nimport \"../../interfaces/IERC1155TokenReceiver.sol\";\nimport \"../../interfaces/IERC1155.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/ERC165.sol\";\n\n\n/**\n * @dev Implementation of Multi-Token Standard contract\n */\ncontract ERC1155 is IERC1155, ERC165 {\n  using SafeMath for uint256;\n  using Address for address;\n\n  /***********************************|\n  |        Variables and Events       |\n  |__________________________________*/\n\n  // onReceive function signatures\n  bytes4 constant internal ERC1155_RECEIVED_VALUE = 0xf23a6e61;\n  bytes4 constant internal ERC1155_BATCH_RECEIVED_VALUE = 0xbc197c81;\n\n  // Objects balances\n  mapping (address => mapping(uint256 => uint256)) internal balances;\n\n  // Operator Functions\n  mapping (address => mapping(address => bool)) internal operators;\n\n\n  /***********************************|\n  |     Public Transfer Functions     |\n  |__________________________________*/\n\n  /**\n   * @notice Transfers amount amount of an _id from the _from address to the _to address specified\n   * @param _from    Source address\n   * @param _to      Target address\n   * @param _id      ID of the token type\n   * @param _amount  Transfered amount\n   * @param _data    Additional data with no specified format, sent in call to `_to`\n   */\n  function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes memory _data)\n    public override\n  {\n    require((msg.sender == _from) || isApprovedForAll(_from, msg.sender), \"ERC1155#safeTransferFrom: INVALID_OPERATOR\");\n    require(_to != address(0),\"ERC1155#safeTransferFrom: INVALID_RECIPIENT\");\n    // require(_amount <= balances[_from][_id]) is not necessary since checked with safemath operations\n\n    _safeTransferFrom(_from, _to, _id, _amount);\n    _callonERC1155Received(_from, _to, _id, _amount, gasleft(), _data);\n  }\n\n  /**\n   * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call)\n   * @param _from     Source addresses\n   * @param _to       Target addresses\n   * @param _ids      IDs of each token type\n   * @param _amounts  Transfer amounts per token type\n   * @param _data     Additional data with no specified format, sent in call to `_to`\n   */\n  function safeBatchTransferFrom(address _from, address _to, uint256[] memory _ids, uint256[] memory _amounts, bytes memory _data)\n    public override\n  {\n    // Requirements\n    require((msg.sender == _from) || isApprovedForAll(_from, msg.sender), \"ERC1155#safeBatchTransferFrom: INVALID_OPERATOR\");\n    require(_to != address(0), \"ERC1155#safeBatchTransferFrom: INVALID_RECIPIENT\");\n\n    _safeBatchTransferFrom(_from, _to, _ids, _amounts);\n    _callonERC1155BatchReceived(_from, _to, _ids, _amounts, gasleft(), _data);\n  }\n\n\n  /***********************************|\n  |    Internal Transfer Functions    |\n  |__________________________________*/\n\n  /**\n   * @notice Transfers amount amount of an _id from the _from address to the _to address specified\n   * @param _from    Source address\n   * @param _to      Target address\n   * @param _id      ID of the token type\n   * @param _amount  Transfered amount\n   */\n  function _safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount)\n    internal\n  {\n    // Update balances\n    balances[_from][_id] = balances[_from][_id].sub(_amount); // Subtract amount\n    balances[_to][_id] = balances[_to][_id].add(_amount);     // Add amount\n\n    // Emit event\n    emit TransferSingle(msg.sender, _from, _to, _id, _amount);\n  }\n\n  /**\n   * @notice Verifies if receiver is contract and if so, calls (_to).onERC1155Received(...)\n   */\n  function _callonERC1155Received(address _from, address _to, uint256 _id, uint256 _amount, uint256 _gasLimit, bytes memory _data)\n    internal\n  {\n    // Check if recipient is contract\n    if (_to.isContract()) {\n      bytes4 retval = IERC1155TokenReceiver(_to).onERC1155Received{gas: _gasLimit}(msg.sender, _from, _id, _amount, _data);\n      require(retval == ERC1155_RECEIVED_VALUE, \"ERC1155#_callonERC1155Received: INVALID_ON_RECEIVE_MESSAGE\");\n    }\n  }\n\n  /**\n   * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call)\n   * @param _from     Source addresses\n   * @param _to       Target addresses\n   * @param _ids      IDs of each token type\n   * @param _amounts  Transfer amounts per token type\n   */\n  function _safeBatchTransferFrom(address _from, address _to, uint256[] memory _ids, uint256[] memory _amounts)\n    internal\n  {\n    require(_ids.length == _amounts.length, \"ERC1155#_safeBatchTransferFrom: INVALID_ARRAYS_LENGTH\");\n\n    // Number of transfer to execute\n    uint256 nTransfer = _ids.length;\n\n    // Executing all transfers\n    for (uint256 i = 0; i < nTransfer; i++) {\n      // Update storage balance of previous bin\n      balances[_from][_ids[i]] = balances[_from][_ids[i]].sub(_amounts[i]);\n      balances[_to][_ids[i]] = balances[_to][_ids[i]].add(_amounts[i]);\n    }\n\n    // Emit event\n    emit TransferBatch(msg.sender, _from, _to, _ids, _amounts);\n  }\n\n  /**\n   * @notice Verifies if receiver is contract and if so, calls (_to).onERC1155BatchReceived(...)\n   */\n  function _callonERC1155BatchReceived(address _from, address _to, uint256[] memory _ids, uint256[] memory _amounts, uint256 _gasLimit, bytes memory _data)\n    internal\n  {\n    // Pass data if recipient is contract\n    if (_to.isContract()) {\n      bytes4 retval = IERC1155TokenReceiver(_to).onERC1155BatchReceived{gas: _gasLimit}(msg.sender, _from, _ids, _amounts, _data);\n      require(retval == ERC1155_BATCH_RECEIVED_VALUE, \"ERC1155#_callonERC1155BatchReceived: INVALID_ON_RECEIVE_MESSAGE\");\n    }\n  }\n\n\n  /***********************************|\n  |         Operator Functions        |\n  |__________________________________*/\n\n  /**\n   * @notice Enable or disable approval for a third party (\"operator\") to manage all of caller's tokens\n   * @param _operator  Address to add to the set of authorized operators\n   * @param _approved  True if the operator is approved, false to revoke approval\n   */\n  function setApprovalForAll(address _operator, bool _approved)\n    external override\n  {\n    // Update operator status\n    operators[msg.sender][_operator] = _approved;\n    emit ApprovalForAll(msg.sender, _operator, _approved);\n  }\n\n  /**\n   * @notice Queries the approval status of an operator for a given owner\n   * @param _owner     The owner of the Tokens\n   * @param _operator  Address of authorized operator\n   * @return isOperator True if the operator is approved, false if not\n   */\n  function isApprovedForAll(address _owner, address _operator)\n    public override view returns (bool isOperator)\n  {\n    return operators[_owner][_operator];\n  }\n\n\n  /***********************************|\n  |         Balance Functions         |\n  |__________________________________*/\n\n  /**\n   * @notice Get the balance of an account's Tokens\n   * @param _owner  The address of the token holder\n   * @param _id     ID of the Token\n   * @return The _owner's balance of the Token type requested\n   */\n  function balanceOf(address _owner, uint256 _id)\n    public override view returns (uint256)\n  {\n    return balances[_owner][_id];\n  }\n\n  /**\n   * @notice Get the balance of multiple account/token pairs\n   * @param _owners The addresses of the token holders\n   * @param _ids    ID of the Tokens\n   * @return        The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair)\n   */\n  function balanceOfBatch(address[] memory _owners, uint256[] memory _ids)\n    public override view returns (uint256[] memory)\n  {\n    require(_owners.length == _ids.length, \"ERC1155#balanceOfBatch: INVALID_ARRAY_LENGTH\");\n\n    // Variables\n    uint256[] memory batchBalances = new uint256[](_owners.length);\n\n    // Iterate over each owner and token ID\n    for (uint256 i = 0; i < _owners.length; i++) {\n      batchBalances[i] = balances[_owners[i]][_ids[i]];\n    }\n\n    return batchBalances;\n  }\n\n\n  /***********************************|\n  |          ERC165 Functions         |\n  |__________________________________*/\n\n  /**\n   * @notice Query if a contract implements an interface\n   * @param _interfaceID  The interface identifier, as specified in ERC-165\n   * @return `true` if the contract implements `_interfaceID` and\n   */\n  function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {\n    if (_interfaceID == type(IERC1155).interfaceId) {\n      return true;\n    }\n    return super.supportsInterface(_interfaceID);\n  }\n}\n"
      },
      "multi-token-standard/contracts/utils/SafeMath.sol": {
        "content": "pragma solidity 0.7.4;\n\n\n/**\n * @title SafeMath\n * @dev Unsigned math operations with safety checks that revert on error\n */\nlibrary SafeMath {\n\n  /**\n   * @dev Multiplies two unsigned integers, reverts on overflow.\n   */\n  function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n    // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n    // benefit is lost if 'b' is also tested.\n    // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522\n    if (a == 0) {\n      return 0;\n    }\n\n    uint256 c = a * b;\n    require(c / a == b, \"SafeMath#mul: OVERFLOW\");\n\n    return c;\n  }\n\n  /**\n   * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.\n   */\n  function div(uint256 a, uint256 b) internal pure returns (uint256) {\n    // Solidity only automatically asserts when dividing by 0\n    require(b > 0, \"SafeMath#div: DIVISION_BY_ZERO\");\n    uint256 c = a / b;\n    // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n\n    return c;\n  }\n\n  /**\n   * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).\n   */\n  function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n    require(b <= a, \"SafeMath#sub: UNDERFLOW\");\n    uint256 c = a - b;\n\n    return c;\n  }\n\n  /**\n   * @dev Adds two unsigned integers, reverts on overflow.\n   */\n  function add(uint256 a, uint256 b) internal pure returns (uint256) {\n    uint256 c = a + b;\n    require(c >= a, \"SafeMath#add: OVERFLOW\");\n\n    return c; \n  }\n\n  /**\n   * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\n   * reverts when dividing by zero.\n   */\n  function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n    require(b != 0, \"SafeMath#mod: DIVISION_BY_ZERO\");\n    return a % b;\n  }\n}"
      },
      "multi-token-standard/contracts/utils/Address.sol": {
        "content": "pragma solidity 0.7.4;\n\n\n/**\n * Utility library of inline functions on addresses\n */\nlibrary Address {\n\n  // Default hash for EOA accounts returned by extcodehash\n  bytes32 constant internal ACCOUNT_HASH = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;\n\n  /**\n   * Returns whether the target address is a contract\n   * @dev This function will return false if invoked during the constructor of a contract.\n   * @param _address address of the account to check\n   * @return Whether the target address is a contract\n   */\n  function isContract(address _address) internal view returns (bool) {\n    bytes32 codehash;\n\n    // Currently there is no better way to check if there is a contract in an address\n    // than to check the size of the code at that address or if it has a non-zero code hash or account hash\n    assembly { codehash := extcodehash(_address) }\n    return (codehash != 0x0 && codehash != ACCOUNT_HASH);\n  }\n}"
      },
      "multi-token-standard/contracts/utils/ERC165.sol": {
        "content": "pragma solidity 0.7.4;\n\nabstract contract ERC165 {\n  /**\n   * @notice Query if a contract implements an interface\n   * @param _interfaceID The interface identifier, as specified in ERC-165\n   * @return `true` if the contract implements `_interfaceID`\n   */\n  function supportsInterface(bytes4 _interfaceID) virtual public pure returns (bool) {\n    return _interfaceID == this.supportsInterface.selector;\n  }\n}"
      },
      "contracts/exchange/NiftyswapFactory.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\nimport \"./NiftyswapExchange.sol\";\nimport \"../interfaces/INiftyswapFactory.sol\";\n\n\ncontract NiftyswapFactory is INiftyswapFactory {\n\n  /***********************************|\n  |       Events And Variables        |\n  |__________________________________*/\n\n  // tokensToExchange[erc1155_token_address][currency_address][currency_token_id]\n  mapping(address => mapping(address => mapping(uint256 => address))) public override tokensToExchange;\n\n  /***********************************|\n  |            Constructor            |\n  |__________________________________*/\n\n  /**\n   * @notice Creates a NiftySwap Exchange for given token contract\n   * @param _token      The address of the ERC-1155 token contract\n   * @param _currency   The address of the currency token contract\n   * @param _currencyID The id of the currency token\n   */\n  function createExchange(address _token, address _currency, uint256 _currencyID) public override {\n    require(tokensToExchange[_token][_currency][_currencyID] == address(0x0), \"NiftyswapFactory#createExchange: EXCHANGE_ALREADY_CREATED\");\n\n    // Create new exchange contract\n    NiftyswapExchange exchange = new NiftyswapExchange(_token, _currency, _currencyID);\n\n    // Store exchange and token addresses\n    tokensToExchange[_token][_currency][_currencyID] = address(exchange);\n\n    // Emit event\n    emit NewExchange(_token, _currency, _currencyID, address(exchange));\n  }\n\n}\n"
      },
      "contracts/interfaces/INiftyswapFactory.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\ninterface INiftyswapFactory {\n\n  /***********************************|\n  |               Events              |\n  |__________________________________*/\n\n  event NewExchange(address indexed token, address indexed currency, uint256 indexed currencyID, address exchange);\n\n\n  /***********************************|\n  |         Public  Functions         |\n  |__________________________________*/\n\n  /**\n   * @notice Creates a NiftySwap Exchange for given token contract\n   * @param _token      The address of the ERC-1155 token contract\n   * @param _currency   The address of the currency token contract\n   * @param _currencyID The id of the currency token\n   */\n  function createExchange(address _token, address _currency, uint256 _currencyID) external;\n\n  /**\n   * @notice Return address of exchange for corresponding ERC-1155 token contract\n   * @param _token      The address of the ERC-1155 token contract\n   * @param _currency   The address of the currency token contract\n   * @param _currencyID The id of the currency token\n   */\n  function tokensToExchange(address _token, address _currency, uint256 _currencyID) external view returns (address);\n\n}"
      },
      "erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol": {
        "content": "pragma solidity 0.7.4;\npragma experimental ABIEncoderV2;\n\nimport \"multi-token-standard/contracts/interfaces/IERC20.sol\";\nimport \"multi-token-standard/contracts/interfaces/IERC165.sol\";\nimport \"multi-token-standard/contracts/interfaces/IERC1155.sol\";\nimport \"multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol\";\nimport \"multi-token-standard/contracts/tokens/ERC1155/ERC1155Meta.sol\";\nimport \"multi-token-standard/contracts/tokens/ERC1155/ERC1155MintBurn.sol\";\n\n\n/**\n * @notice Allows users to wrap any amount of any ERC-20 token with a 1:1 ratio\n *   of corresponding ERC-1155 tokens with native metaTransaction methods. Each\n *   ERC-20 is assigned an ERC-1155 id for more efficient CALLDATA usage when\n *   doing transfers.\n */\ncontract MetaERC20Wrapper is ERC1155Meta, ERC1155MintBurn {\n\n  // Variables\n  uint256 internal nTokens = 1;                         // Number of ERC-20 tokens registered\n  uint256 constant internal ETH_ID = 0x1;               // ID fo tokens representing Ether is 1\n  address constant internal ETH_ADDRESS = address(0x1); // Address for tokens representing Ether is 0x00...01\n  mapping (address => uint256) internal addressToID;    // Maps the ERC-20 addresses to their metaERC20 id\n  mapping (uint256 => address) internal IDtoAddress;    // Maps the metaERC20 ids to their ERC-20 address\n\n\n  /***********************************|\n  |               Events              |\n  |__________________________________*/\n\n  event TokenRegistration(address token_address, uint256 token_id);\n\n  /***********************************|\n  |            Constructor            |\n  |__________________________________*/\n\n  // Register ETH as ID #1 and address 0x1\n  constructor() public {\n    addressToID[ETH_ADDRESS] = ETH_ID;\n    IDtoAddress[ETH_ID] = ETH_ADDRESS;\n  }\n\n  /***********************************|\n  |         Deposit Functions         |\n  |__________________________________*/\n\n  /**\n   * Fallback function\n   * @dev Deposit ETH in this contract to receive wrapped ETH\n   * No parameters provided\n   */\n  receive () external payable {\n    // Deposit ETH sent with transaction\n    deposit(ETH_ADDRESS, msg.sender, msg.value);\n  }\n\n  /**\n   * @dev Deposit ERC20 tokens or ETH in this contract to receive wrapped ERC20s\n   * @param _token     The addess of the token to deposit in this contract\n   * @param _recipient Address that will receive the ERC-1155 tokens\n   * @param _value     The amount of token to deposit in this contract\n   * Note: Users must first approve this contract addres on the contract of the ERC20 to be deposited\n   */\n  function deposit(address _token, address _recipient, uint256 _value)\n    public payable\n  {\n    require(_recipient != address(0x0), \"MetaERC20Wrapper#deposit: INVALID_RECIPIENT\");\n\n    // Internal ID of ERC-20 token deposited\n    uint256 id;\n\n    // Deposit ERC-20 tokens or ETH\n    if (_token != ETH_ADDRESS) {\n\n      // Check if transfer passes\n      require(msg.value == 0, \"MetaERC20Wrapper#deposit: NON_NULL_MSG_VALUE\");\n      IERC20(_token).transferFrom(msg.sender, address(this), _value);\n      require(checkSuccess(), \"MetaERC20Wrapper#deposit: TRANSFER_FAILED\");\n\n      // Load address token ID\n      uint256 addressId = addressToID[_token];\n\n      // Register ID if not already done\n      if (addressId == 0) {\n        nTokens += 1;             // Increment number of tokens registered\n        id = nTokens;             // id of token is the current # of tokens\n        IDtoAddress[id] = _token; // Map id to token address\n        addressToID[_token] = id; // Register token\n\n        // Emit registration event\n        emit TokenRegistration(_token, id);\n\n      } else {\n        id = addressId;\n      }\n\n    } else {\n      require(_value == msg.value, \"MetaERC20Wrapper#deposit: INCORRECT_MSG_VALUE\");\n      id = ETH_ID;\n    }\n\n    // Mint meta tokens\n    _mint(_recipient, id, _value, \"\");\n  }\n\n\n  /***********************************|\n  |         Withdraw Functions        |\n  |__________________________________*/\n\n  /**\n   * @dev Withdraw wrapped ERC20 tokens in this contract to receive the original ERC20s or ETH\n   * @param _token The addess of the token to withdrww from this contract\n   * @param _to The address where the withdrawn tokens will go to\n   * @param _value The amount of tokens to withdraw\n   */\n  function withdraw(address _token, address payable _to, uint256 _value) public {\n    uint256 tokenID = getTokenID(_token);\n    _withdraw(msg.sender, _to, tokenID, _value);\n  }\n\n  /**\n   * @dev Withdraw wrapped ERC20 tokens in this contract to receive the original ERC20s or ETH\n   * @param _from    Address of users sending the Meta tokens\n   * @param _to      The address where the withdrawn tokens will go to\n   * @param _tokenID The token ID of the ERC-20 token to withdraw from this contract\n   * @param _value   The amount of tokens to withdraw\n   */\n  function _withdraw(\n    address _from,\n    address payable _to,\n    uint256 _tokenID,\n    uint256 _value)\n    internal\n  {\n    // Burn meta tokens\n    _burn(_from, _tokenID, _value);\n\n     // Withdraw ERC-20 tokens or ETH\n    if (_tokenID != ETH_ID) {\n      address token = IDtoAddress[_tokenID];\n      IERC20(token).transfer(_to, _value);\n      require(checkSuccess(), \"MetaERC20Wrapper#withdraw: TRANSFER_FAILED\");\n\n    } else {\n      require(_to != address(0), \"MetaERC20Wrapper#withdraw: INVALID_RECIPIENT\");\n      (bool success, ) = _to.call{value: _value}(\"\");\n      require(success, \"MetaERC20Wrapper#withdraw: TRANSFER_FAILED\");\n    }\n\n\n  }\n  /**\n   * @notice Withdraw ERC-20 tokens when receiving their ERC-1155 counterpart\n   * @param _from      The address which previously owned the token\n   * @param _id        The id of the token being transferred\n   * @param _value     The amount of tokens being transferred\n   * @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n   */\n  function onERC1155Received(address, address payable _from, uint256 _id, uint256 _value, bytes memory)\n    public returns(bytes4)\n  {\n    // Only ERC-1155 from this contract are valid\n    require(msg.sender == address(this), \"MetaERC20Wrapper#onERC1155Received: INVALID_ERC1155_RECEIVED\");\n    getIdAddress(_id); // Checks if id is registered\n\n    // Tokens are received, hence need to burn them here\n    _withdraw(address(this), _from, _id, _value);\n\n    return ERC1155_RECEIVED_VALUE;\n  }\n\n  /**\n   * @notice Withdraw ERC-20 tokens when receiving their ERC-1155 counterpart\n   * @param _from      The address which previously owned the token\n   * @param _ids       An array containing ids of each token being transferred\n   * @param _values    An array containing amounts of each token being transferred\n   * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n   */\n  function onERC1155BatchReceived(address, address payable _from, uint256[] memory _ids, uint256[] memory _values, bytes memory)\n    public returns(bytes4)\n  {\n    // Only ERC-1155 from this contract are valid\n    require(msg.sender == address(this), \"MetaERC20Wrapper#onERC1155BatchReceived: INVALID_ERC1155_RECEIVED\");\n\n    // Withdraw all tokens\n    for ( uint256 i = 0; i < _ids.length; i++) {\n      // Checks if id is registered\n      getIdAddress(_ids[i]);\n\n      // Tokens are received, hence need to burn them here\n      _withdraw(address(this), _from, _ids[i], _values[i]);\n    }\n\n    return ERC1155_BATCH_RECEIVED_VALUE;\n  }\n\n  /**\n   * @notice Return the Meta-ERC20 token ID for the given ERC-20 token address\n   * @param _token ERC-20 token address to get the corresponding Meta-ERC20 token ID\n   * @return tokenID Meta-ERC20 token ID\n   */\n  function getTokenID(address _token) public view returns (uint256 tokenID) {\n    tokenID = addressToID[_token];\n    require(tokenID != 0, \"MetaERC20Wrapper#getTokenID: UNREGISTERED_TOKEN\");\n    return tokenID;\n  }\n\n  /**\n   * @notice Return the ERC-20 token address for the given Meta-ERC20 token ID\n   * @param _id Meta-ERC20 token ID to get the corresponding ERC-20 token address\n   * @return token ERC-20 token address\n   */\n  function getIdAddress(uint256 _id) public view returns (address token) {\n    token = IDtoAddress[_id];\n    require(token != address(0x0), \"MetaERC20Wrapper#getIdAddress: UNREGISTERED_TOKEN\");\n    return token;\n  }\n\n  /**\n   * @notice Returns number of tokens currently registered\n   */\n  function getNTokens() external view returns (uint256) {\n    return nTokens;\n  }\n\n\n\n  /***********************************|\n  |          Helper Functions         |\n  |__________________________________*/\n\n  /**\n    * Checks the return value of the previous function up to 32 bytes. Returns true if the previous\n    * function returned 0 bytes or 32 bytes that are not all-zero.\n    * Code taken from: https://github.com/dydxprotocol/solo/blob/10baf8e4c3fb9db4d0919043d3e6fdd6ba834046/contracts/protocol/lib/Token.sol\n    */\n  function checkSuccess()\n    private pure\n    returns (bool)\n  {\n    uint256 returnValue = 0;\n\n    /* solium-disable-next-line security/no-inline-assembly */\n    assembly {\n      // check number of bytes returned from last function call\n      switch returndatasize()\n\n        // no bytes returned: assume success\n        case 0x0 {\n          returnValue := 1\n        }\n\n        // 32 bytes returned: check if non-zero\n        case 0x20 {\n          // copy 32 bytes into scratch space\n          returndatacopy(0x0, 0x0, 0x20)\n\n          // load those bytes into returnValue\n          returnValue := mload(0x0)\n        }\n\n        // not sure what was returned: dont mark as success\n        default { }\n      \n    }\n\n    return returnValue != 0;\n  }\n\n  /**\n   * @notice Indicates whether a contract implements the `ERC1155TokenReceiver` functions and so can accept ERC1155 token types.\n   * @param  interfaceID The ERC-165 interface ID that is queried for support.s\n   * @dev This function MUST return true if it implements the ERC1155TokenReceiver interface and ERC-165 interface.\n   *      This function MUST NOT consume more than 5,000 gas.\n   * @return Wheter ERC-165 or ERC1155TokenReceiver interfaces are supported.\n   */\n  function supportsInterface(bytes4 interfaceID) public override pure returns (bool) {\n    return  interfaceID == type(IERC165).interfaceId ||\n      interfaceID == type(IERC1155).interfaceId || \n      interfaceID == type(IERC1155TokenReceiver).interfaceId;        \n  }\n\n}"
      },
      "multi-token-standard/contracts/interfaces/IERC20.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\n/**\n * @title ERC20 interface\n * @dev see https://eips.ethereum.org/EIPS/eip-20\n */\ninterface IERC20 {\n  function transfer(address to, uint256 value) external returns (bool);\n  function approve(address spender, uint256 value) external returns (bool);\n  function transferFrom(address from, address to, uint256 value) external returns (bool);\n  function totalSupply() external view returns (uint256);\n  function balanceOf(address who) external view returns (uint256);\n  function allowance(address owner, address spender) external view returns (uint256);\n  event Transfer(address indexed from, address indexed to, uint256 value);\n  event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n"
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155Meta.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\npragma experimental ABIEncoderV2;\n\nimport \"./ERC1155.sol\";\nimport \"../../interfaces/IERC20.sol\";\nimport \"../../interfaces/IERC1155.sol\";\nimport \"../../utils/LibBytes.sol\";\nimport \"../../utils/SignatureValidator.sol\";\n\n\n/**\n * @dev ERC-1155 with native metatransaction methods. These additional functions allow users\n *      to presign function calls and allow third parties to execute these on their behalf\n */\ncontract ERC1155Meta is ERC1155, SignatureValidator {\n  using LibBytes for bytes;\n\n  /***********************************|\n  |       Variables and Structs       |\n  |__________________________________*/\n\n  /**\n   * Gas Receipt\n   *   feeTokenData : (bool, address, ?unit256)\n   *     1st element should be the address of the token\n   *     2nd argument (if ERC-1155) should be the ID of the token\n   *     Last element should be a 0x0 if ERC-20 and 0x1 for ERC-1155\n   */\n  struct GasReceipt {\n    uint256 gasFee;           // Fixed cost for the tx\n    uint256 gasLimitCallback; // Maximum amount of gas the callback in transfer functions can use\n    address feeRecipient;     // Address to send payment to\n    bytes feeTokenData;       // Data for token to pay for gas\n  }\n\n  // Which token standard is used to pay gas fee\n  enum FeeTokenType {\n    ERC1155,    // 0x00, ERC-1155 token - DEFAULT\n    ERC20,      // 0x01, ERC-20 token\n    NTypes      // 0x02, number of signature types. Always leave at end.\n  }\n\n  // Signature nonce per address\n  mapping (address => uint256) internal nonces;\n\n\n  /***********************************|\n  |               Events              |\n  |__________________________________*/\n\n  event NonceChange(address indexed signer, uint256 newNonce);\n\n\n  /****************************************|\n  |     Public Meta Transfer Functions     |\n  |_______________________________________*/\n\n  /**\n   * @notice Allows anyone with a valid signature to transfer _amount amount of a token _id on the bahalf of _from\n   * @param _from     Source address\n   * @param _to       Target address\n   * @param _id       ID of the token type\n   * @param _amount   Transfered amount\n   * @param _isGasFee Whether gas is reimbursed to executor or not\n   * @param _data     Encodes a meta transfer indicator, signature, gas payment receipt and extra transfer data\n   *   _data should be encoded as (\n   *   (bytes32 r, bytes32 s, uint8 v, uint256 nonce, SignatureType sigType),\n   *   (GasReceipt g, ?bytes transferData)\n   * )\n   *   i.e. high level encoding should be (bytes, bytes), where the latter bytes array is a nested bytes array\n   */\n  function metaSafeTransferFrom(\n    address _from,\n    address _to,\n    uint256 _id,\n    uint256 _amount,\n    bool _isGasFee,\n    bytes memory _data)\n    public\n  {\n    require(_to != address(0), \"ERC1155Meta#metaSafeTransferFrom: INVALID_RECIPIENT\");\n\n    // Initializing\n    bytes memory transferData;\n    GasReceipt memory gasReceipt;\n\n    // Verify signature and extract the signed data\n    bytes memory signedData = _signatureValidation(\n      _from,\n      _data,\n      abi.encode(\n        META_TX_TYPEHASH,\n        _from, // Address as uint256\n        _to,   // Address as uint256\n        _id,\n        _amount,\n        _isGasFee ? uint256(1) : uint256(0)  // Boolean as uint256\n      )\n    );\n\n    // Transfer asset\n    _safeTransferFrom(_from, _to, _id, _amount);\n\n    // If Gas is being reimbursed\n    if (_isGasFee) {\n      (gasReceipt, transferData) = abi.decode(signedData, (GasReceipt, bytes));\n\n      // We need to somewhat protect relayers against gas griefing attacks in recipient contract.\n      // Hence we only pass the gasLimit to the recipient such that the relayer knows the griefing\n      // limit. Nothing can prevent the receiver to revert the transaction as close to the gasLimit as\n      // possible, but the relayer can now only accept meta-transaction gasLimit within a certain range.\n      _callonERC1155Received(_from, _to, _id, _amount, gasReceipt.gasLimitCallback, transferData);\n\n      // Transfer gas cost\n      _transferGasFee(_from, gasReceipt);\n\n    } else {\n      _callonERC1155Received(_from, _to, _id, _amount, gasleft(), signedData);\n    }\n  }\n\n  /**\n   * @notice Allows anyone with a valid signature to transfer multiple types of tokens on the bahalf of _from\n   * @param _from     Source addresses\n   * @param _to       Target addresses\n   * @param _ids      IDs of each token type\n   * @param _amounts  Transfer amounts per token type\n   * @param _isGasFee Whether gas is reimbursed to executor or not\n   * @param _data     Encodes a meta transfer indicator, signature, gas payment receipt and extra transfer data\n   *   _data should be encoded as (\n   *   (bytes32 r, bytes32 s, uint8 v, uint256 nonce, SignatureType sigType),\n   *   (GasReceipt g, ?bytes transferData)\n   * )\n   *   i.e. high level encoding should be (bytes, bytes), where the latter bytes array is a nested bytes array\n   */\n  function metaSafeBatchTransferFrom(\n    address _from,\n    address _to,\n    uint256[] memory _ids,\n    uint256[] memory _amounts,\n    bool _isGasFee,\n    bytes memory _data)\n    public\n  {\n    require(_to != address(0), \"ERC1155Meta#metaSafeBatchTransferFrom: INVALID_RECIPIENT\");\n\n    // Initializing\n    bytes memory transferData;\n    GasReceipt memory gasReceipt;\n\n    // Verify signature and extract the signed data\n    bytes memory signedData = _signatureValidation(\n      _from,\n      _data,\n      abi.encode(\n        META_BATCH_TX_TYPEHASH,\n        _from, // Address as uint256\n        _to,   // Address as uint256\n        keccak256(abi.encodePacked(_ids)),\n        keccak256(abi.encodePacked(_amounts)),\n        _isGasFee ? uint256(1) : uint256(0)  // Boolean as uint256\n      )\n    );\n\n    // Transfer assets\n    _safeBatchTransferFrom(_from, _to, _ids, _amounts);\n\n    // If gas fee being reimbursed\n    if (_isGasFee) {\n      (gasReceipt, transferData) = abi.decode(signedData, (GasReceipt, bytes));\n\n      // We need to somewhat protect relayers against gas griefing attacks in recipient contract.\n      // Hence we only pass the gasLimit to the recipient such that the relayer knows the griefing\n      // limit. Nothing can prevent the receiver to revert the transaction as close to the gasLimit as\n      // possible, but the relayer can now only accept meta-transaction gasLimit within a certain range.\n      _callonERC1155BatchReceived(_from, _to, _ids, _amounts, gasReceipt.gasLimitCallback, transferData);\n\n      // Handle gas reimbursement\n      _transferGasFee(_from, gasReceipt);\n\n    } else {\n      _callonERC1155BatchReceived(_from, _to, _ids, _amounts, gasleft(), signedData);\n    }\n  }\n\n\n  /***********************************|\n  |         Operator Functions        |\n  |__________________________________*/\n\n  /**\n   * @notice Approve the passed address to spend on behalf of _from if valid signature is provided\n   * @param _owner     Address that wants to set operator status  _spender\n   * @param _operator  Address to add to the set of authorized operators\n   * @param _approved  True if the operator is approved, false to revoke approval\n   * @param _isGasFee  Whether gas will be reimbursed or not, with vlid signature\n   * @param _data      Encodes signature and gas payment receipt\n   *   _data should be encoded as (\n   *     (bytes32 r, bytes32 s, uint8 v, uint256 nonce, SignatureType sigType),\n   *     (GasReceipt g)\n   *   )\n   *   i.e. high level encoding should be (bytes, bytes), where the latter bytes array is a nested bytes array\n   */\n  function metaSetApprovalForAll(\n    address _owner,\n    address _operator,\n    bool _approved,\n    bool _isGasFee,\n    bytes memory _data)\n    public\n  {\n    // Verify signature and extract the signed data\n    bytes memory signedData = _signatureValidation(\n      _owner,\n      _data,\n      abi.encode(\n        META_APPROVAL_TYPEHASH,\n        _owner,                              // Address as uint256\n        _operator,                           // Address as uint256\n        _approved ? uint256(1) : uint256(0), // Boolean as uint256\n        _isGasFee ? uint256(1) : uint256(0)  // Boolean as uint256\n      )\n    );\n\n    // Update operator status\n    operators[_owner][_operator] = _approved;\n\n    // Emit event\n    emit ApprovalForAll(_owner, _operator, _approved);\n\n    // Handle gas reimbursement\n    if (_isGasFee) {\n      GasReceipt memory gasReceipt = abi.decode(signedData, (GasReceipt));\n      _transferGasFee(_owner, gasReceipt);\n    }\n  }\n\n\n  /****************************************|\n  |      Signature Validation Functions     |\n  |_______________________________________*/\n\n  // keccak256(\n  //   \"metaSafeTransferFrom(address,address,uint256,uint256,bool,bytes)\"\n  // );\n  bytes32 internal constant META_TX_TYPEHASH = 0xce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558;\n\n  // keccak256(\n  //   \"metaSafeBatchTransferFrom(address,address,uint256[],uint256[],bool,bytes)\"\n  // );\n  bytes32 internal constant META_BATCH_TX_TYPEHASH = 0xa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a0;\n\n  // keccak256(\n  //   \"metaSetApprovalForAll(address,address,bool,bool,bytes)\"\n  // );\n  bytes32 internal constant META_APPROVAL_TYPEHASH = 0xf5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa524;\n\n  /**\n   * @notice Verifies signatures for this contract\n   * @param _signer     Address of signer\n   * @param _sigData    Encodes signature, gas payment receipt and transfer data (if any)\n   * @param _encMembers Encoded EIP-712 type members (except nonce and _data), all need to be 32 bytes size\n   * @dev _data should be encoded as (\n   *   (bytes32 r, bytes32 s, uint8 v, uint256 nonce, SignatureType sigType),\n   *   (GasReceipt g, ?bytes transferData)\n   * )\n   *   i.e. high level encoding should be (bytes, bytes), where the latter bytes array is a nested bytes array\n   * @dev A valid nonce is a nonce that is within 100 value from the current nonce\n   */\n  function _signatureValidation(\n    address _signer,\n    bytes memory _sigData,\n    bytes memory _encMembers)\n    internal returns (bytes memory signedData)\n  {\n    bytes memory sig;\n\n    // Get signature and data to sign\n    (sig, signedData) = abi.decode(_sigData, (bytes, bytes));\n\n    // Get current nonce and nonce used for signature\n    uint256 currentNonce = nonces[_signer];        // Lowest valid nonce for signer\n    uint256 nonce = uint256(sig.readBytes32(65));  // Nonce passed in the signature object\n\n    // Verify if nonce is valid\n    require(\n      (nonce >= currentNonce) && (nonce < (currentNonce + 100)),\n      \"ERC1155Meta#_signatureValidation: INVALID_NONCE\"\n    );\n\n    // Take hash of bytes arrays\n    bytes32 hash = hashEIP712Message(keccak256(abi.encodePacked(_encMembers, nonce, keccak256(signedData))));\n\n    // Complete data to pass to signer verifier\n    bytes memory fullData = abi.encodePacked(_encMembers, nonce, signedData);\n\n    //Update signature nonce\n    nonces[_signer] = nonce + 1;\n    emit NonceChange(_signer, nonce + 1);\n\n    // Verify if _from is the signer\n    require(isValidSignature(_signer, hash, fullData, sig), \"ERC1155Meta#_signatureValidation: INVALID_SIGNATURE\");\n    return signedData;\n  }\n\n  /**\n   * @notice Returns the current nonce associated with a given address\n   * @param _signer Address to query signature nonce for\n   */\n  function getNonce(address _signer)\n    public view returns (uint256 nonce)\n  {\n    return nonces[_signer];\n  }\n\n\n  /***********************************|\n  |    Gas Reimbursement Functions    |\n  |__________________________________*/\n\n  /**\n   * @notice Will reimburse tx.origin or fee recipient for the gas spent execution a transaction\n   *         Can reimbuse in any ERC-20 or ERC-1155 token\n   * @param _from  Address from which the payment will be made from\n   * @param _g     GasReceipt object that contains gas reimbursement information\n   */\n  function _transferGasFee(address _from, GasReceipt memory _g)\n      internal\n  {\n    // Pop last byte to get token fee type\n    uint8 feeTokenTypeRaw = uint8(_g.feeTokenData.popLastByte());\n\n    // Ensure valid fee token type\n    require(\n      feeTokenTypeRaw < uint8(FeeTokenType.NTypes),\n      \"ERC1155Meta#_transferGasFee: UNSUPPORTED_TOKEN\"\n    );\n\n    // Convert to FeeTokenType corresponding value\n    FeeTokenType feeTokenType = FeeTokenType(feeTokenTypeRaw);\n\n    // Declarations\n    address tokenAddress;\n    address feeRecipient;\n    uint256 tokenID;\n    uint256 fee = _g.gasFee;\n\n    // If receiver is 0x0, then anyone can claim, otherwise, refund addresse provided\n    feeRecipient = _g.feeRecipient == address(0) ? msg.sender : _g.feeRecipient;\n\n    // Fee token is ERC1155\n    if (feeTokenType == FeeTokenType.ERC1155) {\n      (tokenAddress, tokenID) = abi.decode(_g.feeTokenData, (address, uint256));\n\n      // Fee is paid from this ERC1155 contract\n      if (tokenAddress == address(this)) {\n        _safeTransferFrom(_from, feeRecipient, tokenID, fee);\n\n        // No need to protect against griefing since recipient (if contract) is most likely owned by the relayer\n        _callonERC1155Received(_from, feeRecipient, tokenID, gasleft(), fee, \"\");\n\n      // Fee is paid from another ERC-1155 contract\n      } else {\n        IERC1155(tokenAddress).safeTransferFrom(_from, feeRecipient, tokenID, fee, \"\");\n      }\n\n    // Fee token is ERC20\n    } else {\n      tokenAddress = abi.decode(_g.feeTokenData, (address));\n      require(\n        IERC20(tokenAddress).transferFrom(_from, feeRecipient, fee),\n        \"ERC1155Meta#_transferGasFee: ERC20_TRANSFER_FAILED\"\n      );\n    }\n  }\n}\n"
      },
      "multi-token-standard/contracts/utils/LibBytes.sol": {
        "content": "/*\n  Copyright 2018 ZeroEx Intl.\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n  http://www.apache.org/licenses/LICENSE-2.0\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n  This is a truncated version of the original LibBytes.sol library from ZeroEx.\n*/\n\npragma solidity 0.7.4;\n\n\nlibrary LibBytes {\n  using LibBytes for bytes;\n\n  /***********************************|\n  |        Pop Bytes Functions        |\n  |__________________________________*/\n\n  /**\n   * @dev Pops the last byte off of a byte array by modifying its length.\n   * @param b Byte array that will be modified.\n   * @return result The byte that was popped off.\n   */\n  function popLastByte(bytes memory b)\n    internal\n    pure\n    returns (bytes1 result)\n  {\n    require(\n      b.length > 0,\n      \"LibBytes#popLastByte: GREATER_THAN_ZERO_LENGTH_REQUIRED\"\n    );\n\n    // Store last byte.\n    result = b[b.length - 1];\n\n    assembly {\n      // Decrement length of byte array.\n      let newLen := sub(mload(b), 1)\n      mstore(b, newLen)\n    }\n    return result;\n  }\n\n\n  /***********************************|\n  |        Read Bytes Functions       |\n  |__________________________________*/\n\n  /**\n   * @dev Reads a bytes32 value from a position in a byte array.\n   * @param b Byte array containing a bytes32 value.\n   * @param index Index in byte array of bytes32 value.\n   * @return result bytes32 value from byte array.\n   */\n  function readBytes32(\n    bytes memory b,\n    uint256 index\n  )\n    internal\n    pure\n    returns (bytes32 result)\n  {\n    require(\n      b.length >= index + 32,\n      \"LibBytes#readBytes32: GREATER_OR_EQUAL_TO_32_LENGTH_REQUIRED\"\n    );\n\n    // Arrays are prefixed by a 256 bit length parameter\n    index += 32;\n\n    // Read the bytes32 from array memory\n    assembly {\n      result := mload(add(b, index))\n    }\n    return result;\n  }\n}"
      },
      "multi-token-standard/contracts/utils/SignatureValidator.sol": {
        "content": "pragma solidity 0.7.4;\n\nimport \"../interfaces/IERC1271Wallet.sol\";\nimport \"./LibBytes.sol\";\nimport \"./LibEIP712.sol\";\n\n\n/**\n * @dev Contains logic for signature validation.\n * Signatures from wallet contracts assume ERC-1271 support (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md)\n * Notes: Methods are strongly inspired by contracts in https://github.com/0xProject/0x-monorepo/blob/development/\n */\ncontract SignatureValidator is LibEIP712 {\n  using LibBytes for bytes;\n\n  /***********************************|\n  |             Variables             |\n  |__________________________________*/\n\n  // bytes4(keccak256(\"isValidSignature(bytes,bytes)\"))\n  bytes4 constant internal ERC1271_MAGICVALUE = 0x20c13b0b;\n\n  // bytes4(keccak256(\"isValidSignature(bytes32,bytes)\"))\n  bytes4 constant internal ERC1271_MAGICVALUE_BYTES32 = 0x1626ba7e;\n\n  // Allowed signature types.\n  enum SignatureType {\n    Illegal,         // 0x00, default value\n    EIP712,          // 0x01\n    EthSign,         // 0x02\n    WalletBytes,     // 0x03 To call isValidSignature(bytes, bytes) on wallet contract\n    WalletBytes32,   // 0x04 To call isValidSignature(bytes32, bytes) on wallet contract\n    NSignatureTypes  // 0x05, number of signature types. Always leave at end.\n  }\n\n\n  /***********************************|\n  |        Signature Functions        |\n  |__________________________________*/\n\n  /**\n   * @dev Verifies that a hash has been signed by the given signer.\n   * @param _signerAddress  Address that should have signed the given hash.\n   * @param _hash           Hash of the EIP-712 encoded data\n   * @param _data           Full EIP-712 data structure that was hashed and signed\n   * @param _sig            Proof that the hash has been signed by signer.\n   *      For non wallet signatures, _sig is expected to be an array tightly encoded as\n   *      (bytes32 r, bytes32 s, uint8 v, uint256 nonce, SignatureType sigType)\n   * @return isValid True if the address recovered from the provided signature matches the input signer address.\n   */\n  function isValidSignature(\n    address _signerAddress,\n    bytes32 _hash,\n    bytes memory _data,\n    bytes memory _sig\n  )\n    public\n    view\n    returns (bool isValid)\n  {\n    require(\n      _sig.length > 0,\n      \"SignatureValidator#isValidSignature: LENGTH_GREATER_THAN_0_REQUIRED\"\n    );\n\n    require(\n      _signerAddress != address(0x0),\n      \"SignatureValidator#isValidSignature: INVALID_SIGNER\"\n    );\n\n    // Pop last byte off of signature byte array.\n    uint8 signatureTypeRaw = uint8(_sig.popLastByte());\n\n    // Ensure signature is supported\n    require(\n      signatureTypeRaw < uint8(SignatureType.NSignatureTypes),\n      \"SignatureValidator#isValidSignature: UNSUPPORTED_SIGNATURE\"\n    );\n\n    // Extract signature type\n    SignatureType signatureType = SignatureType(signatureTypeRaw);\n\n    // Variables are not scoped in Solidity.\n    uint8 v;\n    bytes32 r;\n    bytes32 s;\n    address recovered;\n\n    // Always illegal signature.\n    // This is always an implicit option since a signer can create a\n    // signature array with invalid type or length. We may as well make\n    // it an explicit option. This aids testing and analysis. It is\n    // also the initialization value for the enum type.\n    if (signatureType == SignatureType.Illegal) {\n      revert(\"SignatureValidator#isValidSignature: ILLEGAL_SIGNATURE\");\n\n\n    // Signature using EIP712\n    } else if (signatureType == SignatureType.EIP712) {\n      require(\n        _sig.length == 97,\n        \"SignatureValidator#isValidSignature: LENGTH_97_REQUIRED\"\n      );\n      r = _sig.readBytes32(0);\n      s = _sig.readBytes32(32);\n      v = uint8(_sig[64]);\n      recovered = ecrecover(_hash, v, r, s);\n      isValid = _signerAddress == recovered;\n      return isValid;\n\n\n    // Signed using web3.eth_sign() or Ethers wallet.signMessage()\n    } else if (signatureType == SignatureType.EthSign) {\n      require(\n        _sig.length == 97,\n        \"SignatureValidator#isValidSignature: LENGTH_97_REQUIRED\"\n      );\n      r = _sig.readBytes32(0);\n      s = _sig.readBytes32(32);\n      v = uint8(_sig[64]);\n      recovered = ecrecover(\n        keccak256(abi.encodePacked(\"\\x19Ethereum Signed Message:\\n32\", _hash)),\n        v,\n        r,\n        s\n      );\n      isValid = _signerAddress == recovered;\n      return isValid;\n\n\n    // Signature verified by wallet contract with data validation.\n    } else if (signatureType == SignatureType.WalletBytes) {\n      isValid = ERC1271_MAGICVALUE == IERC1271Wallet(_signerAddress).isValidSignature(_data, _sig);\n      return isValid;\n\n\n    // Signature verified by wallet contract without data validation.\n    } else if (signatureType == SignatureType.WalletBytes32) {\n      isValid = ERC1271_MAGICVALUE_BYTES32 == IERC1271Wallet(_signerAddress).isValidSignature(_hash, _sig);\n      return isValid;\n    }\n\n    // Anything else is illegal (We do not return false because\n    // the signature may actually be valid, just not in a format\n    // that we currently support. In this case returning false\n    // may lead the caller to incorrectly believe that the\n    // signature was invalid.)\n    revert(\"SignatureValidator#isValidSignature: UNSUPPORTED_SIGNATURE\");\n  }\n}\n"
      },
      "multi-token-standard/contracts/interfaces/IERC1271Wallet.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\n\ninterface  IERC1271Wallet {\n\n  /**\n   * @notice Verifies whether the provided signature is valid with respect to the provided data\n   * @dev MUST return the correct magic value if the signature provided is valid for the provided data\n   *   > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n   *   > This function MAY modify Ethereum's state\n   * @param _data       Arbitrary length data signed on the behalf of address(this)\n   * @param _signature  Signature byte array associated with _data\n   * @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\n   *\n   */\n  function isValidSignature(\n    bytes calldata _data,\n    bytes calldata _signature)\n    external\n    view\n    returns (bytes4 magicValue);\n\n  /**\n   * @notice Verifies whether the provided signature is valid with respect to the provided hash\n   * @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n   *   > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n   *   > This function MAY modify Ethereum's state\n   * @param _hash       keccak256 hash that was signed\n   * @param _signature  Signature byte array associated with _data\n   * @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise\n   */\n  function isValidSignature(\n    bytes32 _hash,\n    bytes calldata _signature)\n    external\n    view\n    returns (bytes4 magicValue);\n}\n"
      },
      "multi-token-standard/contracts/utils/LibEIP712.sol": {
        "content": "/**\n * Copyright 2018 ZeroEx Intl.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *   http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\npragma solidity 0.7.4;\n\n\ncontract LibEIP712 {\n\n  /***********************************|\n  |             Constants             |\n  |__________________________________*/\n\n  // keccak256(\n  //   \"EIP712Domain(address verifyingContract)\"\n  // );\n  bytes32 internal constant DOMAIN_SEPARATOR_TYPEHASH = 0x035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d4749;\n\n  // EIP-191 Header\n  string constant internal EIP191_HEADER = \"\\x19\\x01\";\n\n  /***********************************|\n  |          Hashing Function         |\n  |__________________________________*/\n\n  /**\n   * @dev Calculates EIP712 encoding for a hash struct in this EIP712 Domain.\n   * @param hashStruct The EIP712 hash struct.\n   * @return result EIP712 hash applied to this EIP712 Domain.\n   */\n  function hashEIP712Message(bytes32 hashStruct)\n      internal\n      view\n      returns (bytes32 result)\n  {\n    return keccak256(\n      abi.encodePacked(\n        EIP191_HEADER,\n        keccak256(\n          abi.encode(\n            DOMAIN_SEPARATOR_TYPEHASH,\n            address(this)\n          )\n        ),\n        hashStruct\n    ));\n  }\n}\n"
      },
      "erc20-meta-token/contracts/interfaces/IERC20Wrapper.sol": {
        "content": "pragma solidity 0.7.4;\nimport \"multi-token-standard/contracts/interfaces/IERC1155.sol\";\n\ninterface IERC20Wrapper is IERC1155 {\n\n  /***********************************|\n  |         Deposit Functions         |\n  |__________________________________*/\n\n  /**\n   * Fallback function\n   * @dev Deposit ETH in this contract to receive wrapped ETH\n   */\n  receive () external payable;\n\n  /**\n   * @dev Deposit ERC20 tokens or ETH in this contract to receive wrapped ERC20s\n   * @param _token     The addess of the token to deposit in this contract\n   * @param _recipient Address that will receive the ERC-1155 tokens\n   * @param _value     The amount of token to deposit in this contract\n   * Note: Users must first approve this contract addres on the contract of the ERC20 to be deposited\n   */\n  function deposit(address _token, address _recipient, uint256 _value) external payable;\n\n\n  /***********************************|\n  |         Withdraw Functions        |\n  |__________________________________*/\n\n  /**\n   * @dev Withdraw wrapped ERC20 tokens in this contract to receive the original ERC20s or ETH\n   * @param _token The addess of the token to withdrww from this contract\n   * @param _to The address where the withdrawn tokens will go to\n   * @param _value The amount of tokens to withdraw\n   */\n  function withdraw(address _token, address payable _to, uint256 _value) external;\n\n\n  /***********************************|\n  |         Getter Functions          |\n  |__________________________________*/\n\n  /**\n   * @notice Return the Meta-ERC20 token ID for the given ERC-20 token address\n   * @param _token ERC-20 token address to get the corresponding Meta-ERC20 token ID\n   * @return tokenID Meta-ERC20 token ID\n   */\n  function getTokenID(address _token) external view returns (uint256 tokenID);\n\n  /**\n   * @notice Return the ERC-20 token address for the given Meta-ERC20 token ID\n   * @param _id Meta-ERC20 token ID to get the corresponding ERC-20 token address\n   * @return token ERC-20 token address\n   */\n  function getIdAddress(uint256 _id) external view returns (address token) ;\n\n  /**\n   * @notice Returns number of tokens currently registered\n   */\n  function getNTokens() external view;\n\n\n  /***********************************|\n  |        OnReceive Functions        |\n  |__________________________________*/\n\n  /**\n   * @notice Withdraw ERC-20 tokens when receiving their ERC-1155 counterpart\n   * @param _operator  The address which called the `safeTransferFrom` function\n   * @param _from      The address which previously owned the token\n   * @param _id        The id of the token being transferred\n   * @param _value     The amount of tokens being transferred\n   * @param _data      Additional data with no specified format\n   * @return           `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n   */\n  function onERC1155Received(address _operator, address payable _from, uint256 _id, uint256 _value, bytes calldata _data ) external returns(bytes4);\n\n  /**\n   * @notice Withdraw ERC-20 tokens when receiving their ERC-1155 counterpart\n   * @param _operator  The address which called the `safeBatchTransferFrom` function\n   * @param _from      The address which previously owned the token\n   * @param _ids       An array containing ids of each token being transferred\n   * @param _values    An array containing amounts of each token being transferred\n   * @param _data      Additional data with no specified format\n   * @return           `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n   */\n  function onERC1155BatchReceived(address _operator, address payable _from, uint256[] calldata _ids, uint256[] calldata _values, bytes calldata _data) external returns(bytes4);\n}"
      },
      "contracts/utils/WrapAndNiftyswap.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\npragma experimental ABIEncoderV2;\n\nimport \"../interfaces/INiftyswapExchange.sol\";\nimport \"multi-token-standard/contracts/interfaces/IERC20.sol\";\nimport \"multi-token-standard/contracts/interfaces/IERC1155.sol\";\nimport \"multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol\";\nimport \"erc20-meta-token/contracts/interfaces/IERC20Wrapper.sol\";\n\n/**\n * @notice Will allow users to wrap their  ERC-20 into ERC-1155 tokens\n *         and pass their order to niftyswap. All funds will be returned\n *         to original owner and this contact should never hold any funds\n *         outside of a given wrap transaction.\n * @dev Hardcoding addresses for simplicity, easy to generalize if arguments\n *      are passed in functions, but adds a bit of complexity.\n */\ncontract WrapAndNiftyswap {\n\n  IERC20Wrapper immutable public tokenWrapper; // ERC-20 to ERC-1155 token wrapper contract\n  address immutable public exchange;           // Niftyswap exchange to use\n  address immutable public erc20;              // ERC-20 used in niftyswap exchange\n  address immutable public erc1155;            // ERC-1155 used in niftyswap exchange\n\n  uint256 immutable internal wrappedTokenID; // ID of the wrapped token\n  bool internal isInNiftyswap;               // Whether niftyswap is being called\n\n  /**\n   * @notice Registers contract addresses\n   */\n  constructor(\n    address payable _tokenWrapper,\n    address _exchange,\n    address _erc20,\n    address _erc1155\n  ) public {\n    require(\n      _tokenWrapper != address(0x0) &&\n      _exchange != address(0x0) &&\n      _erc20 != address(0x0) &&\n      _erc1155 != address(0x0),\n      \"INVALID CONSTRUCTOR ARGUMENT\"\n    );\n\n    tokenWrapper = IERC20Wrapper(_tokenWrapper);\n    exchange = _exchange;\n    erc20 = _erc20;\n    erc1155 = _erc1155;\n\n    // Approve wrapper contract for ERC-20\n    // NOTE: This could potentially fail in some extreme usage as it's only\n    // set once, but can easily redeploy this contract if that's the case.\n    IERC20(_erc20).approve(_tokenWrapper, 2**256-1);\n\n    // Store wrapped token ID\n    wrappedTokenID = IERC20Wrapper(_tokenWrapper).getTokenID(_erc20);\n  }\n\n  /**\n   * @notice Wrap ERC-20 to ERC-1155 and swap them\n   * @dev User must approve this contract for ERC-20 first\n   * @param _maxAmount       Maximum amount of ERC-20 user wants to spend\n   * @param _recipient       Address where to send tokens\n   * @param _niftyswapOrder  Encoded Niftyswap order passed in data field of safeTransferFrom()\n   */\n  function wrapAndSwap(\n    uint256 _maxAmount,\n    address _recipient,\n    bytes calldata _niftyswapOrder\n  ) external\n  {\n    // Decode niftyswap order\n    INiftyswapExchange.BuyTokensObj memory obj;\n    (, obj) = abi.decode(_niftyswapOrder, (bytes4, INiftyswapExchange.BuyTokensObj));\n    \n    // Force the recipient to not be set, otherwise wrapped token refunded will be \n    // sent to the user and we won't be able to unwrap it.\n    require(\n      obj.recipient == address(0x0) || obj.recipient == address(this), \n      \"WrapAndNiftyswap#wrapAndSwap: ORDER RECIPIENT MUST BE THIS CONTRACT\"\n    );\n\n    // Pull ERC-20 amount specified in order\n    IERC20(erc20).transferFrom(msg.sender, address(this), _maxAmount);\n\n    // Wrap ERC-20s\n    tokenWrapper.deposit(erc20, address(this), _maxAmount);\n\n    // Swap on Niftyswap\n    isInNiftyswap = true;\n    tokenWrapper.safeTransferFrom(address(this), exchange, wrappedTokenID, _maxAmount, _niftyswapOrder);\n    isInNiftyswap = false;\n\n    // Unwrap ERC-20 and send to receiver, if any received\n    uint256 wrapped_token_amount = tokenWrapper.balanceOf(address(this), wrappedTokenID);\n    if (wrapped_token_amount > 0) {\n      tokenWrapper.withdraw(erc20, payable(_recipient), wrapped_token_amount);\n    }\n\n    // Transfer tokens purchased\n    IERC1155(erc1155).safeBatchTransferFrom(address(this), _recipient, obj.tokensBoughtIDs, obj.tokensBoughtAmounts, \"\");\n  }\n\n  /**\n   * @notice Accepts only tokenWrapper tokens \n   * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n   */\n  function onERC1155Received(address, address, uint256, uint256, bytes calldata)\n    external returns(bytes4)\n  {\n    if (msg.sender != address(tokenWrapper)) {\n      revert(\"WrapAndNiftyswap#onERC1155Received: INVALID_ERC1155_RECEIVED\");\n    }\n    return IERC1155TokenReceiver.onERC1155Received.selector;\n  }\n\n  /**\n   * @notice If receives tracked ERC-1155, it will send a sell order to niftyswap and unwrap received\n   *         wrapped token. The unwrapped tokens will be sent to the sender.\n   * @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n   */\n  function onERC1155BatchReceived(\n    address, \n    address _from, \n    uint256[] calldata _ids, \n    uint256[] calldata _amounts, \n    bytes calldata _niftyswapOrder\n  )\n    external returns(bytes4)\n  { \n    // If coming from niftyswap or wrapped token, ignore\n    if (isInNiftyswap || msg.sender == address(tokenWrapper)){\n      return IERC1155TokenReceiver.onERC1155BatchReceived.selector;\n    } else if (msg.sender != erc1155) {\n      revert(\"WrapAndNiftyswap#onERC1155BatchReceived: INVALID_ERC1155_RECEIVED\");\n    }\n\n    // Decode transfer data\n    INiftyswapExchange.SellTokensObj memory obj;\n    (,obj) = abi.decode(_niftyswapOrder, (bytes4, INiftyswapExchange.SellTokensObj));\n\n    require(\n      obj.recipient == address(0x0) || obj.recipient == address(this), \n      \"WrapAndNiftyswap#onERC1155BatchReceived: ORDER RECIPIENT MUST BE THIS CONTRACT\"\n    );\n\n    // Swap on Niftyswap\n    isInNiftyswap = true;\n    IERC1155(msg.sender).safeBatchTransferFrom(address(this), exchange, _ids, _amounts, _niftyswapOrder);\n    isInNiftyswap = false;\n\n    // Send to recipient the unwrapped ERC-20, if any\n    uint256 wrapped_token_amount = tokenWrapper.balanceOf(address(this), wrappedTokenID);\n    if (wrapped_token_amount > 0) {\n      // Doing it in 2 calls so tx history is more consistent\n      tokenWrapper.withdraw(erc20, payable(address(this)), wrapped_token_amount);\n      IERC20(erc20).transfer(_from, wrapped_token_amount);\n    }\n\n    return IERC1155TokenReceiver.onERC1155BatchReceived.selector;\n  }\n}\n"
      },
      "multi-token-standard/contracts/tokens/ERC1155PackedBalance/ERC1155PackedBalance.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\nimport \"../../utils/SafeMath.sol\";\nimport \"../../interfaces/IERC1155TokenReceiver.sol\";\nimport \"../../interfaces/IERC1155.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/ERC165.sol\";\n\n\n/**\n * @dev Implementation of Multi-Token Standard contract. This implementation of the ERC-1155 standard\n *      utilizes the fact that balances of different token ids can be concatenated within individual\n *      uint256 storage slots. This allows the contract to batch transfer tokens more efficiently at\n *      the cost of limiting the maximum token balance each address can hold. This limit is\n *      2^IDS_BITS_SIZE, which can be adjusted below. In practice, using IDS_BITS_SIZE smaller than 16\n *      did not lead to major efficiency gains.\n */\ncontract ERC1155PackedBalance is IERC1155, ERC165 {\n  using SafeMath for uint256;\n  using Address for address;\n\n  /***********************************|\n  |        Variables and Events       |\n  |__________________________________*/\n\n  // onReceive function signatures\n  bytes4 constant internal ERC1155_RECEIVED_VALUE = 0xf23a6e61;\n  bytes4 constant internal ERC1155_BATCH_RECEIVED_VALUE = 0xbc197c81;\n\n  // Constants regarding bin sizes for balance packing\n  // IDS_BITS_SIZE **MUST** be a power of 2 (e.g. 2, 4, 8, 16, 32, 64, 128)\n  uint256 internal constant IDS_BITS_SIZE   = 32;                  // Max balance amount in bits per token ID\n  uint256 internal constant IDS_PER_UINT256 = 256 / IDS_BITS_SIZE; // Number of ids per uint256\n\n  // Operations for _updateIDBalance\n  enum Operations { Add, Sub }\n\n  // Token IDs balances ; balances[address][id] => balance (using array instead of mapping for efficiency)\n  mapping (address => mapping(uint256 => uint256)) internal balances;\n\n  // Operators\n  mapping (address => mapping(address => bool)) internal operators;\n\n\n  /***********************************|\n  |     Public Transfer Functions     |\n  |__________________________________*/\n\n  /**\n   * @notice Transfers amount amount of an _id from the _from address to the _to address specified\n   * @param _from    Source address\n   * @param _to      Target address\n   * @param _id      ID of the token type\n   * @param _amount  Transfered amount\n   * @param _data    Additional data with no specified format, sent in call to `_to`\n   */\n  function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount, bytes memory _data)\n    public override\n  {\n    // Requirements\n    require((msg.sender == _from) || isApprovedForAll(_from, msg.sender), \"ERC1155PackedBalance#safeTransferFrom: INVALID_OPERATOR\");\n    require(_to != address(0),\"ERC1155PackedBalance#safeTransferFrom: INVALID_RECIPIENT\");\n    // require(_amount <= balances);  Not necessary since checked with _viewUpdateBinValue() checks\n\n    _safeTransferFrom(_from, _to, _id, _amount);\n    _callonERC1155Received(_from, _to, _id, _amount, gasleft(), _data);\n  }\n\n  /**\n   * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call)\n   * @dev Arrays should be sorted so that all ids in a same storage slot are adjacent (more efficient)\n   * @param _from     Source addresses\n   * @param _to       Target addresses\n   * @param _ids      IDs of each token type\n   * @param _amounts  Transfer amounts per token type\n   * @param _data     Additional data with no specified format, sent in call to `_to`\n   */\n  function safeBatchTransferFrom(address _from, address _to, uint256[] memory _ids, uint256[] memory _amounts, bytes memory _data)\n    public override\n  {\n    // Requirements\n    require((msg.sender == _from) || isApprovedForAll(_from, msg.sender), \"ERC1155PackedBalance#safeBatchTransferFrom: INVALID_OPERATOR\");\n    require(_to != address(0),\"ERC1155PackedBalance#safeBatchTransferFrom: INVALID_RECIPIENT\");\n\n    _safeBatchTransferFrom(_from, _to, _ids, _amounts);\n    _callonERC1155BatchReceived(_from, _to, _ids, _amounts, gasleft(), _data);\n  }\n\n\n  /***********************************|\n  |    Internal Transfer Functions    |\n  |__________________________________*/\n\n  /**\n   * @notice Transfers amount amount of an _id from the _from address to the _to address specified\n   * @param _from    Source address\n   * @param _to      Target address\n   * @param _id      ID of the token type\n   * @param _amount  Transfered amount\n   */\n  function _safeTransferFrom(address _from, address _to, uint256 _id, uint256 _amount)\n    internal\n  {\n    //Update balances\n    _updateIDBalance(_from, _id, _amount, Operations.Sub); // Subtract amount from sender\n    _updateIDBalance(_to,   _id, _amount, Operations.Add); // Add amount to recipient\n\n    // Emit event\n    emit TransferSingle(msg.sender, _from, _to, _id, _amount);\n  }\n\n  /**\n   * @notice Verifies if receiver is contract and if so, calls (_to).onERC1155Received(...)\n   */\n  function _callonERC1155Received(address _from, address _to, uint256 _id, uint256 _amount, uint256 _gasLimit, bytes memory _data)\n    internal\n  {\n    // Check if recipient is contract\n    if (_to.isContract()) {\n      bytes4 retval = IERC1155TokenReceiver(_to).onERC1155Received{gas:_gasLimit}(msg.sender, _from, _id, _amount, _data);\n      require(retval == ERC1155_RECEIVED_VALUE, \"ERC1155PackedBalance#_callonERC1155Received: INVALID_ON_RECEIVE_MESSAGE\");\n    }\n  }\n\n  /**\n   * @notice Send multiple types of Tokens from the _from address to the _to address (with safety call)\n   * @dev Arrays should be sorted so that all ids in a same storage slot are adjacent (more efficient)\n   * @param _from     Source addresses\n   * @param _to       Target addresses\n   * @param _ids      IDs of each token type\n   * @param _amounts  Transfer amounts per token type\n   */\n  function _safeBatchTransferFrom(address _from, address _to, uint256[] memory _ids, uint256[] memory _amounts)\n    internal\n  {\n    uint256 nTransfer = _ids.length; // Number of transfer to execute\n    require(nTransfer == _amounts.length, \"ERC1155PackedBalance#_safeBatchTransferFrom: INVALID_ARRAYS_LENGTH\");\n\n    if (_from != _to && nTransfer > 0) {\n      // Load first bin and index where the token ID balance exists\n      (uint256 bin, uint256 index) = getIDBinIndex(_ids[0]);\n\n      // Balance for current bin in memory (initialized with first transfer)\n      uint256 balFrom = _viewUpdateBinValue(balances[_from][bin], index, _amounts[0], Operations.Sub);\n      uint256 balTo = _viewUpdateBinValue(balances[_to][bin], index, _amounts[0], Operations.Add);\n\n      // Last bin updated\n      uint256 lastBin = bin;\n\n      for (uint256 i = 1; i < nTransfer; i++) {\n        (bin, index) = getIDBinIndex(_ids[i]);\n\n        // If new bin\n        if (bin != lastBin) {\n          // Update storage balance of previous bin\n          balances[_from][lastBin] = balFrom;\n          balances[_to][lastBin] = balTo;\n\n          balFrom = balances[_from][bin];\n          balTo = balances[_to][bin];\n\n          // Bin will be the most recent bin\n          lastBin = bin;\n        }\n\n        // Update memory balance\n        balFrom = _viewUpdateBinValue(balFrom, index, _amounts[i], Operations.Sub);\n        balTo = _viewUpdateBinValue(balTo, index, _amounts[i], Operations.Add);\n      }\n\n      // Update storage of the last bin visited\n      balances[_from][bin] = balFrom;\n      balances[_to][bin] = balTo;\n\n    // If transfer to self, just make sure all amounts are valid\n    } else {\n      for (uint256 i = 0; i < nTransfer; i++) {\n        require(balanceOf(_from, _ids[i]) >= _amounts[i], \"ERC1155PackedBalance#_safeBatchTransferFrom: UNDERFLOW\");\n      }\n    }\n\n    // Emit event\n    emit TransferBatch(msg.sender, _from, _to, _ids, _amounts);\n  }\n\n  /**\n   * @notice Verifies if receiver is contract and if so, calls (_to).onERC1155BatchReceived(...)\n   */\n  function _callonERC1155BatchReceived(address _from, address _to, uint256[] memory _ids, uint256[] memory _amounts, uint256 _gasLimit, bytes memory _data)\n    internal\n  {\n    // Pass data if recipient is contract\n    if (_to.isContract()) {\n      bytes4 retval = IERC1155TokenReceiver(_to).onERC1155BatchReceived{gas: _gasLimit}(msg.sender, _from, _ids, _amounts, _data);\n      require(retval == ERC1155_BATCH_RECEIVED_VALUE, \"ERC1155PackedBalance#_callonERC1155BatchReceived: INVALID_ON_RECEIVE_MESSAGE\");\n    }\n  }\n\n\n  /***********************************|\n  |         Operator Functions        |\n  |__________________________________*/\n\n  /**\n   * @notice Enable or disable approval for a third party (\"operator\") to manage all of caller's tokens\n   * @param _operator  Address to add to the set of authorized operators\n   * @param _approved  True if the operator is approved, false to revoke approval\n   */\n  function setApprovalForAll(address _operator, bool _approved)\n    external override\n  {\n    // Update operator status\n    operators[msg.sender][_operator] = _approved;\n    emit ApprovalForAll(msg.sender, _operator, _approved);\n  }\n\n  /**\n   * @notice Queries the approval status of an operator for a given owner\n   * @param _owner     The owner of the Tokens\n   * @param _operator  Address of authorized operator\n   * @return isOperator True if the operator is approved, false if not\n   */\n  function isApprovedForAll(address _owner, address _operator)\n    public override view returns (bool isOperator)\n  {\n    return operators[_owner][_operator];\n  }\n\n\n  /***********************************|\n  |     Public Balance Functions      |\n  |__________________________________*/\n\n  /**\n   * @notice Get the balance of an account's Tokens\n   * @param _owner  The address of the token holder\n   * @param _id     ID of the Token\n   * @return The _owner's balance of the Token type requested\n   */\n  function balanceOf(address _owner, uint256 _id)\n    public override view returns (uint256)\n  {\n    uint256 bin;\n    uint256 index;\n\n    //Get bin and index of _id\n    (bin, index) = getIDBinIndex(_id);\n    return getValueInBin(balances[_owner][bin], index);\n  }\n\n  /**\n   * @notice Get the balance of multiple account/token pairs\n   * @param _owners The addresses of the token holders (sorted owners will lead to less gas usage)\n   * @param _ids    ID of the Tokens (sorted ids will lead to less gas usage\n   * @return The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair)\n    */\n  function balanceOfBatch(address[] memory _owners, uint256[] memory _ids)\n    public override view returns (uint256[] memory)\n  {\n    uint256 n_owners = _owners.length;\n    require(n_owners == _ids.length, \"ERC1155PackedBalance#balanceOfBatch: INVALID_ARRAY_LENGTH\");\n\n    // First values\n    (uint256 bin, uint256 index) = getIDBinIndex(_ids[0]);\n    uint256 balance_bin = balances[_owners[0]][bin];\n    uint256 last_bin = bin;\n\n    // Initialization\n    uint256[] memory batchBalances = new uint256[](n_owners);\n    batchBalances[0] = getValueInBin(balance_bin, index);\n\n    // Iterate over each owner and token ID\n    for (uint256 i = 1; i < n_owners; i++) {\n      (bin, index) = getIDBinIndex(_ids[i]);\n\n      // SLOAD if bin changed for the same owner or if owner changed\n      if (bin != last_bin || _owners[i-1] != _owners[i]) {\n        balance_bin = balances[_owners[i]][bin];\n        last_bin = bin;\n      }\n\n      batchBalances[i] = getValueInBin(balance_bin, index);\n    }\n\n    return batchBalances;\n  }\n\n\n  /***********************************|\n  |      Packed Balance Functions     |\n  |__________________________________*/\n\n  /**\n   * @notice Update the balance of a id for a given address\n   * @param _address    Address to update id balance\n   * @param _id         Id to update balance of\n   * @param _amount     Amount to update the id balance\n   * @param _operation  Which operation to conduct :\n   *   Operations.Add: Add _amount to id balance\n   *   Operations.Sub: Substract _amount from id balance\n   */\n  function _updateIDBalance(address _address, uint256 _id, uint256 _amount, Operations _operation)\n    internal\n  {\n    uint256 bin;\n    uint256 index;\n\n    // Get bin and index of _id\n    (bin, index) = getIDBinIndex(_id);\n\n    // Update balance\n    balances[_address][bin] = _viewUpdateBinValue(balances[_address][bin], index, _amount, _operation);\n  }\n\n  /**\n   * @notice Update a value in _binValues\n   * @param _binValues  Uint256 containing values of size IDS_BITS_SIZE (the token balances)\n   * @param _index      Index of the value in the provided bin\n   * @param _amount     Amount to update the id balance\n   * @param _operation  Which operation to conduct :\n   *   Operations.Add: Add _amount to value in _binValues at _index\n   *   Operations.Sub: Substract _amount from value in _binValues at _index\n   */\n  function _viewUpdateBinValue(uint256 _binValues, uint256 _index, uint256 _amount, Operations _operation)\n    internal pure returns (uint256 newBinValues)\n  {\n    uint256 shift = IDS_BITS_SIZE * _index;\n    uint256 mask = (uint256(1) << IDS_BITS_SIZE) - 1;\n\n    if (_operation == Operations.Add) {\n      newBinValues = _binValues + (_amount << shift);\n      require(newBinValues >= _binValues, \"ERC1155PackedBalance#_viewUpdateBinValue: OVERFLOW\");\n      require(\n        ((_binValues >> shift) & mask) + _amount < 2**IDS_BITS_SIZE, // Checks that no other id changed\n        \"ERC1155PackedBalance#_viewUpdateBinValue: OVERFLOW\"\n      );\n\n    } else if (_operation == Operations.Sub) {\n      newBinValues = _binValues - (_amount << shift);\n      require(newBinValues <= _binValues, \"ERC1155PackedBalance#_viewUpdateBinValue: UNDERFLOW\");\n      require(\n        ((_binValues >> shift) & mask) >= _amount, // Checks that no other id changed\n        \"ERC1155PackedBalance#_viewUpdateBinValue: UNDERFLOW\"\n      );\n\n    } else {\n      revert(\"ERC1155PackedBalance#_viewUpdateBinValue: INVALID_BIN_WRITE_OPERATION\"); // Bad operation\n    }\n\n    return newBinValues;\n  }\n\n  /**\n  * @notice Return the bin number and index within that bin where ID is\n  * @param _id  Token id\n  * @return bin index (Bin number, ID\"s index within that bin)\n  */\n  function getIDBinIndex(uint256 _id)\n    public pure returns (uint256 bin, uint256 index)\n  {\n    bin = _id / IDS_PER_UINT256;\n    index = _id % IDS_PER_UINT256;\n    return (bin, index);\n  }\n\n  /**\n   * @notice Return amount in _binValues at position _index\n   * @param _binValues  uint256 containing the balances of IDS_PER_UINT256 ids\n   * @param _index      Index at which to retrieve amount\n   * @return amount at given _index in _bin\n   */\n  function getValueInBin(uint256 _binValues, uint256 _index)\n    public pure returns (uint256)\n  {\n    // require(_index < IDS_PER_UINT256) is not required since getIDBinIndex ensures `_index < IDS_PER_UINT256`\n\n    // Mask to retrieve data for a given binData\n    uint256 mask = (uint256(1) << IDS_BITS_SIZE) - 1;\n\n    // Shift amount\n    uint256 rightShift = IDS_BITS_SIZE * _index;\n    return (_binValues >> rightShift) & mask;\n  }\n\n\n  /***********************************|\n  |          ERC165 Functions         |\n  |__________________________________*/\n\n  /**\n   * @notice Query if a contract implements an interface\n   * @param _interfaceID  The interface identifier, as specified in ERC-165\n   * @return `true` if the contract implements `_interfaceID` and\n   */\n  function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {\n    if (_interfaceID == type(IERC1155).interfaceId) {\n      return true;\n    }\n    return super.supportsInterface(_interfaceID);\n  }\n}\n"
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155Metadata.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\nimport \"../../interfaces/IERC1155Metadata.sol\";\nimport \"../../utils/ERC165.sol\";\n\n\n/**\n * @notice Contract that handles metadata related methods.\n * @dev Methods assume a deterministic generation of URI based on token IDs.\n *      Methods also assume that URI uses hex representation of token IDs.\n */\ncontract ERC1155Metadata is IERC1155Metadata, ERC165 {\n  // URI's default URI prefix\n  string internal baseMetadataURI;\n\n  /***********************************|\n  |     Metadata Public Function s    |\n  |__________________________________*/\n\n  /**\n   * @notice A distinct Uniform Resource Identifier (URI) for a given token.\n   * @dev URIs are defined in RFC 3986.\n   *      URIs are assumed to be deterministically generated based on token ID\n   * @return URI string\n   */\n  function uri(uint256 _id) public override view returns (string memory) {\n    return string(abi.encodePacked(baseMetadataURI, _uint2str(_id), \".json\"));\n  }\n\n\n  /***********************************|\n  |    Metadata Internal Functions    |\n  |__________________________________*/\n\n  /**\n   * @notice Will emit default URI log event for corresponding token _id\n   * @param _tokenIDs Array of IDs of tokens to log default URI\n   */\n  function _logURIs(uint256[] memory _tokenIDs) internal {\n    string memory baseURL = baseMetadataURI;\n    string memory tokenURI;\n\n    for (uint256 i = 0; i < _tokenIDs.length; i++) {\n      tokenURI = string(abi.encodePacked(baseURL, _uint2str(_tokenIDs[i]), \".json\"));\n      emit URI(tokenURI, _tokenIDs[i]);\n    }\n  }\n\n  /**\n   * @notice Will update the base URL of token's URI\n   * @param _newBaseMetadataURI New base URL of token's URI\n   */\n  function _setBaseMetadataURI(string memory _newBaseMetadataURI) internal {\n    baseMetadataURI = _newBaseMetadataURI;\n  }\n\n  /**\n   * @notice Query if a contract implements an interface\n   * @param _interfaceID  The interface identifier, as specified in ERC-165\n   * @return `true` if the contract implements `_interfaceID` and\n   */\n  function supportsInterface(bytes4 _interfaceID) public override virtual pure returns (bool) {\n    if (_interfaceID == type(IERC1155Metadata).interfaceId) {\n      return true;\n    }\n    return super.supportsInterface(_interfaceID);\n  }\n\n\n  /***********************************|\n  |    Utility Internal Functions     |\n  |__________________________________*/\n\n  /**\n   * @notice Convert uint256 to string\n   * @param _i Unsigned integer to convert to string\n   */\n  function _uint2str(uint256 _i) internal pure returns (string memory _uintAsString) {\n    if (_i == 0) {\n      return \"0\";\n    }\n\n    uint256 j = _i;\n    uint256 ii = _i;\n    uint256 len;\n\n    // Get number of bytes\n    while (j != 0) {\n      len++;\n      j /= 10;\n    }\n\n    bytes memory bstr = new bytes(len);\n    uint256 k = len - 1;\n\n    // Get each individual ASCII\n    while (ii != 0) {\n      bstr[k--] = byte(uint8(48 + ii % 10));\n      ii /= 10;\n    }\n\n    // Convert to string\n    return string(bstr);\n  }\n}\n"
      },
      "multi-token-standard/contracts/interfaces/IERC1155Metadata.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\n\ninterface IERC1155Metadata {\n\n  event URI(string _uri, uint256 indexed _id);\n\n  /****************************************|\n  |                Functions               |\n  |_______________________________________*/\n\n  /**\n   * @notice A distinct Uniform Resource Identifier (URI) for a given token.\n   * @dev URIs are defined in RFC 3986.\n   *      URIs are assumed to be deterministically generated based on token ID\n   *      Token IDs are assumed to be represented in their hex format in URIs\n   * @return URI string\n   */\n  function uri(uint256 _id) external view returns (string memory);\n}\n"
      },
      "multi-token-standard/contracts/mocks/ERC1155MintBurnPackedBalanceMock.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\npragma experimental ABIEncoderV2;\n\nimport \"../tokens/ERC1155PackedBalance/ERC1155MintBurnPackedBalance.sol\";\nimport \"../tokens/ERC1155/ERC1155Metadata.sol\";\n\n\ncontract ERC1155MintBurnPackedBalanceMock is ERC1155MintBurnPackedBalance, ERC1155Metadata {\n\n  /***********************************|\n  |               ERC165              |\n  |__________________________________*/\n\n  /**\n   * @notice Query if a contract implements an interface\n   * @dev Parent contract inheriting multiple contracts with supportsInterface()\n   *      need to implement an overriding supportsInterface() function specifying\n   *      all inheriting contracts that have a supportsInterface() function.\n   * @param _interfaceID The interface identifier, as specified in ERC-165\n   * @return `true` if the contract implements `_interfaceID`\n   */\n  function supportsInterface(\n    bytes4 _interfaceID\n  ) public override(\n    ERC1155PackedBalance,\n    ERC1155Metadata\n  ) pure returns (bool) {\n    return super.supportsInterface(_interfaceID);\n  }\n\n  /***********************************|\n  |         Minting Functions         |\n  |__________________________________*/\n\n  /**\n   * @dev Mint _value of tokens of a given id\n   * @param _to The address to mint tokens to.\n   * @param _id token id to mint\n   * @param _value The amount to be minted\n   * @param _data Data to be passed if receiver is contract\n   */\n  function mintMock(address _to, uint256 _id, uint256 _value, bytes memory _data)\n    public\n  {\n    _mint(_to, _id, _value, _data);\n  }\n\n  /**\n   * @dev Mint tokens for each ids in _ids\n   * @param _to The address to mint tokens to.\n   * @param _ids Array of ids to mint\n   * @param _values Array of amount of tokens to mint per id\n   * @param _data Data to be passed if receiver is contract\n   */\n  function batchMintMock(address _to, uint256[] memory _ids, uint256[] memory _values, bytes memory _data)\n    public\n  {\n    _batchMint(_to, _ids, _values, _data);\n  }\n\n\n  /***********************************|\n  |         Burning Functions         |\n  |__________________________________*/\n\n  /**\n   * @dev burn _value of tokens of a given token id\n   * @param _from The address to burn tokens from.\n   * @param _id token id to burn\n   * @param _value The amount to be burned\n   */\n  function burnMock(address _from, uint256 _id, uint256 _value)\n    public\n  {\n    _burn(_from, _id, _value);\n  }\n\n  /**\n   * @dev burn _value of tokens of a given token id\n   * @param _from The address to burn tokens from.\n   * @param _ids Array of token ids to burn\n   * @param _values Array of the amount to be burned\n   */\n  function batchBurnMock(address _from, uint256[] memory _ids, uint256[] memory _values)\n    public\n  {\n    _batchBurn(_from, _ids, _values);\n  }\n\n\n  /***********************************|\n  |       Unsupported Functions       |\n  |__________________________________*/\n\n  fallback () external {\n    revert(\"ERC1155MetaMintBurnPackedBalanceMock: INVALID_METHOD\");\n  }\n}\n"
      },
      "multi-token-standard/contracts/tokens/ERC1155PackedBalance/ERC1155MintBurnPackedBalance.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\n\nimport \"./ERC1155PackedBalance.sol\";\n\n\n/**\n * @dev Multi-Fungible Tokens with minting and burning methods. These methods assume\n *      a parent contract to be executed as they are `internal` functions.\n */\ncontract ERC1155MintBurnPackedBalance is ERC1155PackedBalance {\n\n  /****************************************|\n  |            Minting Functions           |\n  |_______________________________________*/\n\n  /**\n   * @notice Mint _amount of tokens of a given id\n   * @param _to      The address to mint tokens to\n   * @param _id      Token id to mint\n   * @param _amount  The amount to be minted\n   * @param _data    Data to pass if receiver is contract\n   */\n  function _mint(address _to, uint256 _id, uint256 _amount, bytes memory _data)\n    internal\n  {\n    //Add _amount\n    _updateIDBalance(_to,   _id, _amount, Operations.Add); // Add amount to recipient\n\n    // Emit event\n    emit TransferSingle(msg.sender, address(0x0), _to, _id, _amount);\n\n    // Calling onReceive method if recipient is contract\n    _callonERC1155Received(address(0x0), _to, _id, _amount, gasleft(), _data);\n  }\n\n  /**\n   * @notice Mint tokens for each (_ids[i], _amounts[i]) pair\n   * @param _to       The address to mint tokens to\n   * @param _ids      Array of ids to mint\n   * @param _amounts  Array of amount of tokens to mint per id\n   * @param _data    Data to pass if receiver is contract\n   */\n  function _batchMint(address _to, uint256[] memory _ids, uint256[] memory _amounts, bytes memory _data)\n    internal\n  {\n    require(_ids.length == _amounts.length, \"ERC1155MintBurnPackedBalance#_batchMint: INVALID_ARRAYS_LENGTH\");\n\n    if (_ids.length > 0) {\n      // Load first bin and index where the token ID balance exists\n      (uint256 bin, uint256 index) = getIDBinIndex(_ids[0]);\n\n      // Balance for current bin in memory (initialized with first transfer)\n      uint256 balTo = _viewUpdateBinValue(balances[_to][bin], index, _amounts[0], Operations.Add);\n\n      // Number of transfer to execute\n      uint256 nTransfer = _ids.length;\n\n      // Last bin updated\n      uint256 lastBin = bin;\n\n      for (uint256 i = 1; i < nTransfer; i++) {\n        (bin, index) = getIDBinIndex(_ids[i]);\n\n        // If new bin\n        if (bin != lastBin) {\n          // Update storage balance of previous bin\n          balances[_to][lastBin] = balTo;\n          balTo = balances[_to][bin];\n\n          // Bin will be the most recent bin\n          lastBin = bin;\n        }\n\n        // Update memory balance\n        balTo = _viewUpdateBinValue(balTo, index, _amounts[i], Operations.Add);\n      }\n\n      // Update storage of the last bin visited\n      balances[_to][bin] = balTo;\n    }\n\n    // //Emit event\n    emit TransferBatch(msg.sender, address(0x0), _to, _ids, _amounts);\n\n    // Calling onReceive method if recipient is contract\n    _callonERC1155BatchReceived(address(0x0), _to, _ids, _amounts, gasleft(), _data);\n  }\n\n\n  /****************************************|\n  |            Burning Functions           |\n  |_______________________________________*/\n\n  /**\n   * @notice Burn _amount of tokens of a given token id\n   * @param _from    The address to burn tokens from\n   * @param _id      Token id to burn\n   * @param _amount  The amount to be burned\n   */\n  function _burn(address _from, uint256 _id, uint256 _amount)\n    internal\n  {\n    // Substract _amount\n    _updateIDBalance(_from, _id, _amount, Operations.Sub);\n\n    // Emit event\n    emit TransferSingle(msg.sender, _from, address(0x0), _id, _amount);\n  }\n\n  /**\n   * @notice Burn tokens of given token id for each (_ids[i], _amounts[i]) pair\n   * @dev This batchBurn method does not implement the most efficient way of updating\n   *      balances to reduce the potential bug surface as this function is expected to\n   *      be less common than transfers. EIP-2200 makes this method significantly\n   *      more efficient already for packed balances.\n   * @param _from     The address to burn tokens from\n   * @param _ids      Array of token ids to burn\n   * @param _amounts  Array of the amount to be burned\n   */\n  function _batchBurn(address _from, uint256[] memory _ids, uint256[] memory _amounts)\n    internal\n  {\n    // Number of burning to execute\n    uint256 nBurn = _ids.length;\n    require(nBurn == _amounts.length, \"ERC1155MintBurnPackedBalance#batchBurn: INVALID_ARRAYS_LENGTH\");\n\n    // Executing all burning\n    for (uint256 i = 0; i < nBurn; i++) {\n      // Update storage balance\n      _updateIDBalance(_from,   _ids[i], _amounts[i], Operations.Sub); // Add amount to recipient\n    }\n\n    // Emit batch burn event\n    emit TransferBatch(msg.sender, _from, address(0x0), _ids, _amounts);\n  }\n}\n"
      },
      "contracts/mocks/ERC1155PackedBalanceMock.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\npragma experimental ABIEncoderV2;\nimport \"multi-token-standard/contracts/mocks/ERC1155MintBurnPackedBalanceMock.sol\";\n\n\ncontract ERC1155PackedBalanceMock is ERC1155MintBurnPackedBalanceMock {\n\n}"
      },
      "multi-token-standard/contracts/mocks/ERC1155MintBurnMock.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\npragma experimental ABIEncoderV2;\n\nimport \"../tokens/ERC1155/ERC1155MintBurn.sol\";\nimport \"../tokens/ERC1155/ERC1155Metadata.sol\";\n\n\ncontract ERC1155MintBurnMock is ERC1155MintBurn, ERC1155Metadata {\n\n  /**\n   * @notice Query if a contract implements an interface\n   * @dev Parent contract inheriting multiple contracts with supportsInterface()\n   *      need to implement an overriding supportsInterface() function specifying\n   *      all inheriting contracts that have a supportsInterface() function.\n   * @param _interfaceID The interface identifier, as specified in ERC-165\n   * @return `true` if the contract implements `_interfaceID`\n   */\n  function supportsInterface(\n    bytes4 _interfaceID\n  ) public override(\n    ERC1155,\n    ERC1155Metadata\n  ) pure returns (bool) {\n    return super.supportsInterface(_interfaceID);\n  }\n\n  /***********************************|\n  |         Minting Functions         |\n  |__________________________________*/\n\n  /**\n   * @dev Mint _value of tokens of a given id\n   * @param _to The address to mint tokens to.\n   * @param _id token id to mint\n   * @param _value The amount to be minted\n   * @param _data Data to be passed if receiver is contract\n   */\n  function mintMock(address _to, uint256 _id, uint256 _value, bytes memory _data)\n    public\n  {\n    super._mint(_to, _id, _value, _data);\n  }\n\n  /**\n   * @dev Mint tokens for each ids in _ids\n   * @param _to The address to mint tokens to.\n   * @param _ids Array of ids to mint\n   * @param _values Array of amount of tokens to mint per id\n   * @param _data Data to be passed if receiver is contract\n   */\n  function batchMintMock(address _to, uint256[] memory _ids, uint256[] memory _values, bytes memory _data)\n    public\n  {\n    super._batchMint(_to, _ids, _values, _data);\n  }\n\n\n  /***********************************|\n  |         Burning Functions         |\n  |__________________________________*/\n\n  /**\n   * @dev burn _value of tokens of a given token id\n   * @param _from The address to burn tokens from.\n   * @param _id token id to burn\n   * @param _value The amount to be burned\n   */\n  function burnMock(address _from, uint256 _id, uint256 _value)\n    public\n  {\n    super._burn(_from, _id, _value);\n  }\n\n  /**\n   * @dev burn _value of tokens of a given token id\n   * @param _from The address to burn tokens from.\n   * @param _ids Array of token ids to burn\n   * @param _values Array of the amount to be burned\n   */\n  function batchBurnMock(address _from, uint256[] memory _ids, uint256[] memory _values)\n    public\n  {\n    super._batchBurn(_from, _ids, _values);\n  }\n  \n  /***********************************|\n  |       Unsupported Functions       |\n  |__________________________________*/\n\n  fallback () virtual external {\n    revert(\"ERC1155MetaMintBurnMock: INVALID_METHOD\");\n  }\n}\n"
      },
      "contracts/mocks/ERC1155Mock.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\npragma experimental ABIEncoderV2;\nimport \"multi-token-standard/contracts/mocks/ERC1155MintBurnMock.sol\";\n\n\ncontract ERC1155Mock is ERC1155MintBurnMock {\n\n}"
      },
      "erc20-meta-token/contracts/mocks/ERC20Mock.sol": {
        "content": "pragma solidity 0.7.4;\n\nimport \"multi-token-standard/contracts/interfaces/IERC20.sol\";\nimport \"multi-token-standard/contracts/utils/SafeMath.sol\";\n\n\n/**\n * @title Standard ERC20 token\n *\n * @dev Implementation of the basic standard token.\n * https://eips.ethereum.org/EIPS/eip-20\n * Originally based on code by FirstBlood:\n * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol\n *\n * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for\n * all accounts just by listening to said events. Note that this isn't required by the specification, and other\n * compliant implementations may not do it.\n */\ncontract ERC20 is IERC20 {\n  using SafeMath for uint256;\n\n  mapping (address => uint256) private _balances;\n\n  mapping (address => mapping (address => uint256)) private _allowed;\n\n  uint256 private _totalSupply;\n\n  /**\n    * @dev Total number of tokens in existence\n    */\n  function totalSupply() public override view returns (uint256) {\n    return _totalSupply;\n  }\n\n  /**\n    * @dev Gets the balance of the specified address.\n    * @param owner The address to query the balance of.\n    * @return A uint256 representing the amount owned by the passed address.\n    */\n  function balanceOf(address owner) public override view returns (uint256) {\n    return _balances[owner];\n  }\n\n  /**\n    * @dev Function to check the amount of tokens that an owner allowed to a spender.\n    * @param owner address The address which owns the funds.\n    * @param spender address The address which will spend the funds.\n    * @return A uint256 specifying the amount of tokens still available for the spender.\n    */\n  function allowance(address owner, address spender) public override view returns (uint256) {\n    return _allowed[owner][spender];\n  }\n\n  /**\n    * @dev Transfer token to a specified address\n    * @param to The address to transfer to.\n    * @param value The amount to be transferred.\n    */\n  function transfer(address to, uint256 value) public override returns (bool) {\n    _transfer(msg.sender, to, value);\n    return true;\n  }\n\n  /**\n    * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\n    * Beware that changing an allowance with this method brings the risk that someone may use both the old\n    * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\n    * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\n    * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n    * @param spender The address which will spend the funds.\n    * @param value The amount of tokens to be spent.\n    */\n  function approve(address spender, uint256 value) public override returns (bool) {\n    _approve(msg.sender, spender, value);\n    return true;\n  }\n\n  /**\n    * @dev Transfer tokens from one address to another.\n    * Note that while this function emits an Approval event, this is not required as per the specification,\n    * and other compliant implementations may not emit the event.\n    * @param from address The address which you want to send tokens from\n    * @param to address The address which you want to transfer to\n    * @param value uint256 the amount of tokens to be transferred\n    */\n  function transferFrom(address from, address to, uint256 value) public override returns (bool) {\n    _transfer(from, to, value);\n    _approve(from, msg.sender, _allowed[from][msg.sender].sub(value));\n    return true;\n  }\n\n  /**\n    * @dev Increase the amount of tokens that an owner allowed to a spender.\n    * approve should be called when _allowed[msg.sender][spender] == 0. To increment\n    * allowed value is better to use this function to avoid 2 calls (and wait until\n    * the first transaction is mined)\n    * From MonolithDAO Token.sol\n    * Emits an Approval event.\n    * @param spender The address which will spend the funds.\n    * @param addedValue The amount of tokens to increase the allowance by.\n    */\n  function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {\n    _approve(msg.sender, spender, _allowed[msg.sender][spender].add(addedValue));\n    return true;\n  }\n\n  /**\n    * @dev Decrease the amount of tokens that an owner allowed to a spender.\n    * approve should be called when _allowed[msg.sender][spender] == 0. To decrement\n    * allowed value is better to use this function to avoid 2 calls (and wait until\n    * the first transaction is mined)\n    * From MonolithDAO Token.sol\n    * Emits an Approval event.\n    * @param spender The address which will spend the funds.\n    * @param subtractedValue The amount of tokens to decrease the allowance by.\n    */\n  function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {\n    _approve(msg.sender, spender, _allowed[msg.sender][spender].sub(subtractedValue));\n    return true;\n  }\n\n  /**\n    * @dev Transfer token for a specified addresses\n    * @param from The address to transfer from.\n    * @param to The address to transfer to.\n    * @param value The amount to be transferred.\n    */\n  function _transfer(address from, address to, uint256 value) internal {\n    require(to != address(0));\n\n    _balances[from] = _balances[from].sub(value);\n    _balances[to] = _balances[to].add(value);\n    emit Transfer(from, to, value);\n  }\n\n  /**\n    * @dev Internal function that mints an amount of the token and assigns it to\n    * an account. This encapsulates the modification of balances such that the\n    * proper events are emitted.\n    * @param account The account that will receive the created tokens.\n    * @param value The amount that will be created.\n    */\n  function _mint(address account, uint256 value) internal {\n    require(account != address(0));\n\n    _totalSupply = _totalSupply.add(value);\n    _balances[account] = _balances[account].add(value);\n    emit Transfer(address(0), account, value);\n  }\n\n  /**\n    * @dev Internal function that burns an amount of the token of a given\n    * account.\n    * @param account The account whose tokens will be burnt.\n    * @param value The amount that will be burnt.\n    */\n  function _burn(address account, uint256 value) internal {\n    require(account != address(0));\n\n    _totalSupply = _totalSupply.sub(value);\n    _balances[account] = _balances[account].sub(value);\n    emit Transfer(account, address(0), value);\n  }\n\n  /**\n    * @dev Approve an address to spend another addresses' tokens.\n    * @param owner The address that owns the tokens.\n    * @param spender The address that will spend the tokens.\n    * @param value The number of tokens that can be spent.\n    */\n  function _approve(address owner, address spender, uint256 value) internal {\n    require(spender != address(0));\n    require(owner != address(0));\n\n    _allowed[owner][spender] = value;\n    emit Approval(owner, spender, value);\n  }\n\n  /**\n    * @dev Internal function that burns an amount of the token of a given\n    * account, deducting from the sender's allowance for said account. Uses the\n    * internal burn function.\n    * Emits an Approval event (reflecting the reduced allowance).\n    * @param account The account whose tokens will be burnt.\n    * @param value The amount that will be burnt.\n    */\n  function _burnFrom(address account, uint256 value) internal {\n    _burn(account, value);\n    _approve(account, msg.sender, _allowed[account][msg.sender].sub(value));\n  }\n\n}\n\ncontract ERC20Mock is ERC20 {\n  constructor() public { }\n\n  function mockMint(address _address, uint256 _amount) public {\n    _mint(_address, _amount);\n  }\n\n}\n\n\n"
      },
      "contracts/mocks/ERC20TokenMock.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\nimport \"erc20-meta-token/contracts/mocks/ERC20Mock.sol\";\n\ncontract ERC20TokenMock is ERC20Mock {\n\n}"
      },
      "contracts/mocks/ERC20WrapperMock.sol": {
        "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity 0.7.4;\npragma experimental ABIEncoderV2;\nimport \"erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol\";\n\n\ncontract ERC20WrapperMock is MetaERC20Wrapper {\n\n}"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 100000,
        "details": {
          "yul": true
        }
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/exchange/NiftyswapExchange.sol": {
        "NiftyswapExchange": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_tokenAddr",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_currencyAddr",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_currencyID",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "buyer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokensSoldIds",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokensSoldAmounts",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "currencyBoughtAmounts",
                  "type": "uint256[]"
                }
              ],
              "name": "CurrencyPurchase",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "provider",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokenAmounts",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "currencyAmounts",
                  "type": "uint256[]"
                }
              ],
              "name": "LiquidityAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "provider",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokenAmounts",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "currencyAmounts",
                  "type": "uint256[]"
                }
              ],
              "name": "LiquidityRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "buyer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokensBoughtIds",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokensBoughtAmounts",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "currencySoldAmounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TokensPurchase",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_assetBoughtAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_assetSoldReserve",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_assetBoughtReserve",
                  "type": "uint256"
                }
              ],
              "name": "getBuyPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrencyInfo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "getCurrencyReserves",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getFactoryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_tokensBought",
                  "type": "uint256[]"
                }
              ],
              "name": "getPrice_currencyToToken",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_tokensSold",
                  "type": "uint256[]"
                }
              ],
              "name": "getPrice_tokenToCurrency",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_assetSoldAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_assetSoldReserve",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_assetBoughtReserve",
                  "type": "uint256"
                }
              ],
              "name": "getSellPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "price",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "getTotalSupply",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:980:33",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:33",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "76:117:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "86:22:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "101:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "95:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "95:13:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "86:5:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "171:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "180:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "183:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "173:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "173:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "173:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "130:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "141:5:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "156:3:33",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "161:1:33",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "152:3:33"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "152:11:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "165:1:33",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "148:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "148:19:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "137:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "137:31:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "127:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "127:42:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "120:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "120:50:33"
                              },
                              "nodeType": "YulIf",
                              "src": "117:2:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "55:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "66:5:33",
                            "type": ""
                          }
                        ],
                        "src": "14:179:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "313:253:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "359:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "368:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "376:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "361:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "361:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "361:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "334:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "343:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "330:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "330:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "355:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "326:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "326:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "323:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "394:52:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "436:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "404:31:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "404:42:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "394:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "455:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "501:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "512:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "497:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "497:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "465:31:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "465:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "455:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "525:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "545:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "556:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "541:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "541:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "535:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "535:25:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "525:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "263:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "274:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "286:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "294:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "302:6:33",
                            "type": ""
                          }
                        ],
                        "src": "198:368:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "745:233:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "762:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "773:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "755:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "755:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "755:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "796:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "807:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "792:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "792:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "812:2:33",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "785:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "785:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "785:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "835:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "846:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "831:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "831:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "851:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#constructor:IN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "824:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "824:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "824:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "906:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "917:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "902:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "902:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "922:13:33",
                                    "type": "",
                                    "value": "VALID_INPUT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "895:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "895:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "895:41:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "945:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "957:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "968:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "953:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "953:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "945:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0667dec8c77b85a6e26ef8f86a9040a6b4378973b40258d8b8f236db1709d355__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "722:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "736:4:33",
                            "type": ""
                          }
                        ],
                        "src": "571:407:33"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_t_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256_fromMemory(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_address_fromMemory(headStart)\n        value1 := abi_decode_t_address_fromMemory(add(headStart, 32))\n        value2 := mload(add(headStart, 64))\n    }\n    function abi_encode_tuple_t_stringliteral_0667dec8c77b85a6e26ef8f86a9040a6b4378973b40258d8b8f236db1709d355__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"NiftyswapExchange#constructor:IN\")\n        mstore(add(headStart, 96), \"VALID_INPUT\")\n        tail := add(headStart, 128)\n    }\n}",
                  "id": 33,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "60806040523480156200001157600080fd5b506040516200552c3803806200552c83398101604081905262000034916200011f565b6000805460ff191660011790556001600160a01b038316158015906200006257506001600160a01b03821615155b6200008a5760405162461bcd60e51b815260040162000081906200015f565b60405180910390fd5b600580546001600160a01b03199081163317909155600380546001600160a01b03868116918416821790925560048054928616929093168217909255600683905514620000d9576000620000dc565b60015b60048054911515600160a01b0260ff60a01b1990921691909117905550620001aa915050565b80516001600160a01b03811681146200011a57600080fd5b919050565b60008060006060848603121562000134578283fd5b6200013f8462000102565b92506200014f6020850162000102565b9150604084015190509250925092565b6020808252602b908201527f4e696674797377617045786368616e676523636f6e7374727563746f723a494e60408201526a159053125117d25394155560aa1b606082015260800190565b61537280620001ba6000396000f3fe608060405234801561001057600080fd5b50600436106101355760003560e01c8063863ed300116100b2578063be57146811610081578063f23a6e6111610066578063f23a6e61146102c6578063f242432a146102d9578063fca16c3b146102ec57610135565b8063be571468146102a0578063e985e9c5146102b357610135565b8063863ed30014610252578063a22cb46514610265578063a9c2e36c14610278578063bc197c811461028057610135565b80632bef5e381161010957806346adf5ca116100ee57806346adf5ca146102165780634e1273f41461022c5780636ee8e1341461023f57610135565b80632bef5e38146101ee5780632eb2c2d61461020157610135565b8062fdd58e1461017057806301ffc9a71461019957806310fe9ae8146101b9578063209b96c5146101ce575b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614bd0565b60405180910390fd5b61018361017e366004613da5565b6102ff565b60405161019091906150b0565b60405180910390f35b6101ac6101a7366004613f77565b610337565b6040516101909190614540565b6101c161041e565b60405161019091906142ed565b6101e16101dc366004613e93565b61043a565b60405161019091906144f4565b6101e16101fc366004613e93565b6104db565b61021461020f366004613c63565b610573565b005b61021e61067e565b604051610190929190614461565b6101e161023a366004613dd0565b61069f565b61018361024d366004614288565b6107ec565b6101e1610260366004613ed3565b610880565b610214610273366004613d74565b6109e3565b6101c1610a7c565b61029361028e366004613c63565b610a98565b604051610190919061454b565b6101e16102ae366004613ed3565b61110f565b6101ac6102c1366004613c2b565b611267565b6102936102d4366004613d0d565b6112a2565b6102146102e7366004613d0d565b6113d3565b6101836102fa366004614288565b6114d7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602090815260408083208484529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103ca57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b8061041657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b60035473ffffffffffffffffffffffffffffffffffffffff1690565b606081818167ffffffffffffffff8111801561045557600080fd5b5060405190808252806020026020018201604052801561047f578160200160208202803683370190505b50905060005b828110156104d2576008600087878481811061049d57fe5b905060200201358152602001908152602001600020548282815181106104bf57fe5b6020908102919091010152600101610485565b50949350505050565b606081818167ffffffffffffffff811180156104f657600080fd5b50604051908082528060200260200182016040528015610520578160200160208202803683370190505b50905060005b828110156104d2576007600087878481811061053e57fe5b9050602002013581526020019081526020016000205482828151811061056057fe5b6020908102919091010152600101610526565b3373ffffffffffffffffffffffffffffffffffffffff8616148061059c575061059c8533611267565b6105f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615265602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661065d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806151d96030913960400191505060405180910390fd5b61066985858585611556565b610677858585855a86611880565b5050505050565b60045460065473ffffffffffffffffffffffffffffffffffffffff90911691565b606081518351146106fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615239602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561071557600080fd5b5060405190808252806020026020018201604052801561073f578160200160208202803683370190505b50905060005b84518110156107e4576001600086838151811061075e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106107ae57fe5b60200260200101518152602001908152602001600020548282815181106107d157fe5b6020908102919091010152600101610745565b509392505050565b600080831180156107fd5750600082115b610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f73565b6000610841856103e3611af7565b9050600061084f8285611af7565b9050600061086983610863886103e8611af7565b90611b87565b905080828161087457fe5b04979650505050505050565b606083818167ffffffffffffffff8111801561089b57600080fd5b506040519080825280602002602001820160405280156108c5578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061090057fe5b905060200201356040518363ffffffff1660e01b8152600401610924929190614461565b60206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190614270565b90506109b887878481811061098557fe5b9050602002013582600860008d8d8881811061099d57fe5b905060200201358152602001908152602001600020546107ec565b8383815181106109c457fe5b6020908102919091010152506001016108cb565b509695505050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60055473ffffffffffffffffffffffffffffffffffffffff1690565b60008082806020019051810190610aaf9190613f93565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb2d81047000000000000000000000000000000000000000000000000000000001415610ccb5760045473ffffffffffffffffffffffffffffffffffffffff163314610b4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061502d565b8451600114610b87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061476f565b60065485600081518110610b9757fe5b602002602001015114610bd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b610bde6139dd565b83806020019051810190610bf29190614048565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610c1d578151610c1f565b875b90506060610c508360200151846040015189600081518110610c3d57fe5b6020026020010151866060015186611bfb565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fd38bc77e62e239476b3e25620d73f29a4a188e808aad79f4a81aaf44871a7a308560200151866040015185604051610cbb93929190614507565b60405180910390a35050506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fdb08ec97000000000000000000000000000000000000000000000000000000001415610e2b5760035473ffffffffffffffffffffffffffffffffffffffff163314610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906149b3565b610d6e613a1b565b83806020019051810190610d8291906141d1565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610dad578151610daf565b875b90506060610dc888888560200151866040015186611fbf565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f89e4dbdd48f69e7920342e9ad9691b9a7150f254e6a0af177ccfd2556aab8bcd8a8a85604051610cbb93929190614507565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f82da2b73000000000000000000000000000000000000000000000000000000001415610f035760035473ffffffffffffffffffffffffffffffffffffffff163314610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906146ec565b610ece613a52565b83806020019051810190610ee29190613faf565b905080915050610efd878787846000015185602001516122c9565b506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f5c0bf259000000000000000000000000000000000000000000000000000000001415610fc257333014610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614af0565b610f8e613a6c565b83806020019051810190610fa29190614115565b905080915050610efd87878784600001518560200151866040015161293e565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc8c323f90000000000000000000000000000000000000000000000000000000014156110b15760045473ffffffffffffffffffffffffffffffffffffffff16331461105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906147f2565b6006548560008151811061106d57fe5b6020026020010151146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b6110e3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614fd0565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b606083818167ffffffffffffffff8111801561112a57600080fd5b50604051908082528060200260200182016040528015611154578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061118f57fe5b905060200201356040518363ffffffff1660e01b81526004016111b3929190614461565b60206040518083038186803b1580156111cb57600080fd5b505afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190614270565b905061124787878481811061121457fe5b90506020020135600860008c8c8781811061122b57fe5b90506020020135815260200190815260200160002054836114d7565b83838151811061125357fe5b60209081029190910101525060010161115a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b6040805160018082528183019092526000916060919060208083019080368337505060408051600180825281830190925292935060609291506020808301908036833701905050905085826000815181106112f957fe5b602002602001018181525050848160008151811061131357fe5b60200260200101818152505061132c8888848488610a98565b7fffffffff00000000000000000000000000000000000000000000000000000000167fbc197c8100000000000000000000000000000000000000000000000000000000146113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c2d565b507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b3373ffffffffffffffffffffffffffffffffffffffff861614806113fc57506113fc8533611267565b611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061517a602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061514f602b913960400191505060405180910390fd5b6114c985858585612ea7565b610677858585855a86612faf565b600080831180156114e85750600082115b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f16565b60006115366103e86115308688611af7565b90611af7565b9050600061154a6103e361153086896131a0565b90506109d88282613217565b80518251146115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806151a46035913960400191505060405180910390fd5b815160005b81811015611778576116468382815181106115cc57fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b60200260200101518152602001908152602001600020546131a090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120865190919087908590811061167c57fe5b602002602001015181526020019081526020016000208190555061171f8382815181106116a557fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008785815181106116fa57fe5b6020026020010151815260200190815260200160002054611b8790919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260408120865190919087908590811061175557fe5b6020908102919091018101518252810191909152604001600020556001016115b5565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561182557818101518382015260200161180d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561186457818101518382015260200161184c565b5050505090500194505050505060405180910390a45050505050565b61189f8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561195757818101518382015260200161193f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561199657818101518382015260200161197e565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156119d25781810151838201526020016119ba565b50505050905090810190601f1680156119ff5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611a2457600080fd5b5087f1158015611a38573d6000803e3d6000fd5b50505050506040513d6020811015611a4f57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806152c4603f913960400191505060405180910390fd5b505b505050505050565b600082611b0657506000610331565b82820282848281611b1357fe5b0414611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236d756c3a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082820183811015611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b60005460609060ff16611c6f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905542831015611cd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614632565b8551848167ffffffffffffffff81118015611ceb57600080fd5b50604051908082528060200260200182016040528015611d15578160200160208202803683370190505b50925060608267ffffffffffffffff81118015611d3157600080fd5b50604051908082528060200260200182016040528015611d5b578160200160208202803683370190505b509050611d6789613295565b905060005b83811015611e645760008a8281518110611d8257fe5b6020026020010151905060008a8381518110611d9a57fe5b602002602001015190506000848481518110611db257fe5b6020026020010151905060008211611df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614ce8565b60008381526008602052604081205490611e118483856114d7565b9050611e1d88826131a0565b9750808a8781518110611e2c57fe5b6020908102919091010152611e418282611b87565b60009586526008602052604090952094909455505060019092019150611d6c9050565b508115611efa57600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611ec79230928b9289910161441c565b600060405180830381600087803b158015611ee157600080fd5b505af1158015611ef5573d6000803e3d6000fd5b505050505b6003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632eb2c2d690611f5690309089908e908e9060040161430e565b600060405180830381600087803b158015611f7057600080fd5b505af1158015611f84573d6000803e3d6000fd5b50505050505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905595945050505050565b60005460609060ff1661203357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055855142841015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614875565b60008167ffffffffffffffff811180156120b057600080fd5b506040519080825280602002602001820160405280156120da578160200160208202803683370190505b50925060608267ffffffffffffffff811180156120f657600080fd5b50604051908082528060200260200182016040528015612120578160200160208202803683370190505b50905061212c89613295565b905060005b838110156122325760008a828151811061214757fe5b6020026020010151905060008a838151811061215f57fe5b60200260200101519050600084848151811061217757fe5b60200260200101519050600082116121bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614eb9565b600083815260086020526040812054906121df846121d985826131a0565b846107ec565b90506121eb8882611b87565b97506121f782826131a0565b600086815260086020526040902055895181908b908890811061221657fe5b6020908102919091010152505060019093019250612131915050565b508682101561226d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906148d2565b600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611f569230928b9289910161441c565b60005460ff1661233a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690554281101561239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614d45565b8351600060608267ffffffffffffffff811180156123b957600080fd5b506040519080825280602002602001820160405280156123e3578160200160208202803683370190505b50905060608367ffffffffffffffff811180156123ff57600080fd5b50604051908082528060200260200182016040528015612429578160200160208202803683370190505b50905060608467ffffffffffffffff8111801561244557600080fd5b5060405190808252806020026020018201604052801561246f578160200160208202803683370190505b50905061247b89613295565b905060005b858110156127db5760008a828151811061249657fe5b6020026020010151905060008a83815181106124ae57fe5b6020026020010151905060008a84815181106124c657fe5b602002602001015111612505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614578565b6000811161253f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614e5c565b60045474010000000000000000000000000000000000000000900460ff161561259e5760065482141561259e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614da2565b60008281526007602052604090205480156127145760008381526008602052604081205486519091908790879081106125d357fe5b602002602001015190506000806126056125f68588611af790919063ffffffff16565b61260085896131a0565b613217565b91509150818f898151811061261657fe5b60200260200101511015612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a93565b6126608483611b87565b6000888152600860205260409020556126798c83611b87565b9b508361269c866115308461268f576000612692565b60015b869060ff166131a0565b816126a357fe5b048b89815181106126b057fe5b602002602001018181525050818a89815181106126c957fe5b6020026020010181815250506126fb8b89815181106126e457fe5b602002602001015186611b8790919063ffffffff16565b600088815260076020526040902055506127d092505050565b60008b858151811061272257fe5b60200260200101519050633b9aca0081101561276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a36565b60008481526008602052604090208190556127858982611b87565b6000858152600760205260409020829055885190995081908990879081106127a957fe5b602002602001018181525050808786815181106127c257fe5b602002602001018181525050505b505050600101612480565b506127f78a8a856040518060200160405280600081525061357d565b60045460065460405173ffffffffffffffffffffffffffffffffffffffff9092169163f242432a918d913091908990612854907fc8c323f9000000000000000000000000000000000000000000000000000000009060200161454b565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612883959493929190614373565b600060405180830381600087803b15801561289d57600080fd5b505af11580156128b1573d6000803e3d6000fd5b505050508973ffffffffffffffffffffffffffffffffffffffff167f403f9dc4582dae52d3eeb4a22d37540ffb13c32d964c92ec5ac0d3d5628da3168a8a856040516128ff93929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050505050505050565b60005460ff166129af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055428111612a10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614b73565b8451600060608267ffffffffffffffff81118015612a2d57600080fd5b50604051908082528060200260200182016040528015612a57578160200160208202803683370190505b50905060608367ffffffffffffffff81118015612a7357600080fd5b50604051908082528060200260200182016040528015612a9d578160200160208202803683370190505b50905060608467ffffffffffffffff81118015612ab957600080fd5b50604051908082528060200260200182016040528015612ae3578160200160208202803683370190505b509050612aef8a613295565b905060005b85811015612cee5760008b8281518110612b0a57fe5b6020026020010151905060008b8381518110612b2257fe5b602002602001015190506000848481518110612b3a57fe5b6020026020010151905060006007600085815260200190815260200160002054905060008111612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906145d5565b6000848152600860205260408120549082612bb18684611af7565b81612bb857fe5b049050600083612bc88787611af7565b81612bcf57fe5b0490508f8881518110612bde57fe5b6020026020010151821015612c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c8a565b8e8881518110612c2b57fe5b6020026020010151811015612c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614dff565b612c7684876131a0565b600088815260076020526040902055612c8f83836131a0565b600088815260086020526040902055612ca88c83611b87565b9b50808b8981518110612cb757fe5b602002602001018181525050818a8981518110612cd057fe5b6020908102919091010152505060019095019450612af49350505050565b50612cfa308b8b6137b2565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a308d600654886040518563ffffffff1660e01b8152600401612d5d949392919061441c565b600060405180830381600087803b158015612d7757600080fd5b505af1158015612d8b573d6000803e3d6000fd5b50506003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632eb2c2d69150612deb9030908f908f90899060040161430e565b600060405180830381600087803b158015612e0557600080fd5b505af1158015612e19573d6000803e3d6000fd5b505050508a73ffffffffffffffffffffffffffffffffffffffff167f711e9bcb94b4cf7bc99c1cb938edc75ac7e85a136838e90abf6ee1f5adebd4238b8585604051612e6793929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320858452909152902054612ee290826131a0565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160208181526040808420888552825280842095909555928716825282528281208582529091522054612f339082611b87565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600160209081526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b612fce8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561308757818101518382015260200161306f565b50505050905090810190601f1680156130b45780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156130d757600080fd5b5087f11580156130eb573d6000803e3d6000fd5b50505050506040513d602081101561310257600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180615303603a913960400191505060405180910390fd5b60008282111561321157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008082848161322357fe5b06156132455761323e600184868161323757fe5b0490611b87565b6001613252565b82848161324e57fe5b0460005b915091505b9250929050565b6000813f8015801590611b8057507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b8051606090600181141561338957604080516001808252818301909252606091602080830190803683375050600354865192935073ffffffffffffffffffffffffffffffffffffffff169162fdd58e9150309087906000906132f357fe5b60200260200101516040518363ffffffff1660e01b8152600401613318929190614461565b60206040518083038186803b15801561333057600080fd5b505afa158015613344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133689190614270565b8160008151811061337557fe5b602090810291909101015291506104199050565b60608167ffffffffffffffff811180156133a257600080fd5b506040519080825280602002602001820160405280156133cc578160200160208202803683370190505b50905030816000815181106133dd57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015260015b828110156134a95784818151811061341957fe5b602002602001015185600183038151811061343057fe5b60200260200101511061346f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614930565b3082828151811061347c57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101613405565b506003546040517f4e1273f400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690634e1273f4906135029084908890600401614487565b60006040518083038186803b15801561351a57600080fd5b505afa15801561352e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135749190810190613f3c565b92505050610419565b81518351146135d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152946030913960400191505060405180910390fd5b825160005b818110156136a1576136488482815181106135f357fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008885815181106116fa57fe5b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120875190919088908590811061367e57fe5b6020908102919091018101518252810191909152604001600020556001016135dc565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561374f578181015183820152602001613737565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561378e578181015183820152602001613776565b5050505090500194505050505060405180910390a461067760008686865a87611880565b81518151811461380d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152096030913960400191505060405180910390fd5b60005b818110156138d55761387c83828151811061382757fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b73ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040812086519091908790859081106138b257fe5b602090810291909101810151825281019190915260400160002055600101613810565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561398357818101518382015260200161396b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156139c25781810151838201526020016139aa565b5050505090500194505050505060405180910390a450505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600081525090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b604051806040016040528060608152602001600081525090565b60405180606001604052806060815260200160608152602001600081525090565b8051610419816150fb565b60008083601f840112613aa9578081fd5b50813567ffffffffffffffff811115613ac0578182fd5b602083019150836020808302850101111561325757600080fd5b600082601f830112613aea578081fd5b8135613afd613af8826150dd565b6150b9565b818152915060208083019084810181840286018201871015613b1e57600080fd5b60005b84811015613b3d57813584529282019290820190600101613b21565b505050505092915050565b600082601f830112613b58578081fd5b8151613b66613af8826150dd565b818152915060208083019084810181840286018201871015613b8757600080fd5b60005b84811015613b3d57815184529282019290820190600101613b8a565b600082601f830112613bb6578081fd5b813567ffffffffffffffff811115613bca57fe5b613bfb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016150b9565b9150808252836020828501011115613c1257600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215613c3d578182fd5b8235613c48816150fb565b91506020830135613c58816150fb565b809150509250929050565b600080600080600060a08688031215613c7a578081fd5b8535613c85816150fb565b94506020860135613c95816150fb565b9350604086013567ffffffffffffffff80821115613cb1578283fd5b613cbd89838a01613ada565b94506060880135915080821115613cd2578283fd5b613cde89838a01613ada565b93506080880135915080821115613cf3578283fd5b50613d0088828901613ba6565b9150509295509295909350565b600080600080600060a08688031215613d24578081fd5b8535613d2f816150fb565b94506020860135613d3f816150fb565b93506040860135925060608601359150608086013567ffffffffffffffff811115613d68578182fd5b613d0088828901613ba6565b60008060408385031215613d86578182fd5b8235613d91816150fb565b915060208301358015158114613c58578182fd5b60008060408385031215613db7578182fd5b8235613dc2816150fb565b946020939093013593505050565b60008060408385031215613de2578182fd5b823567ffffffffffffffff80821115613df9578384fd5b818501915085601f830112613e0c578384fd5b8135613e1a613af8826150dd565b80828252602080830192508086018a828387028901011115613e3a578889fd5b8896505b84871015613e65578035613e51816150fb565b845260019690960195928101928101613e3e565b509096508701359350505080821115613e7c578283fd5b50613e8985828601613ada565b9150509250929050565b60008060208385031215613ea5578182fd5b823567ffffffffffffffff811115613ebb578283fd5b613ec785828601613a98565b90969095509350505050565b60008060008060408587031215613ee8578182fd5b843567ffffffffffffffff80821115613eff578384fd5b613f0b88838901613a98565b90965094506020870135915080821115613f23578384fd5b50613f3087828801613a98565b95989497509550505050565b600060208284031215613f4d578081fd5b815167ffffffffffffffff811115613f63578182fd5b613f6f84828501613b48565b949350505050565b600060208284031215613f88578081fd5b8135611b8081615120565b600060208284031215613fa4578081fd5b8151611b8081615120565b60008060408385031215613fc1578182fd5b8251613fcc81615120565b602084015190925067ffffffffffffffff80821115613fe9578283fd5b9084019060408287031215613ffc578283fd5b60405160408101818110838211171561401157fe5b604052825182811115614022578485fd5b61402e88828601613b48565b825250602083015160208201528093505050509250929050565b6000806040838503121561405a578182fd5b825161406581615120565b602084015190925067ffffffffffffffff80821115614082578283fd5b9084019060808287031215614095578283fd5b6040516080810181811083821117156140aa57fe5b6040526140b683613a8d565b81526020830151828111156140c9578485fd5b6140d588828601613b48565b6020830152506040830151828111156140ec578485fd5b6140f888828601613b48565b604083015250606083015160608201528093505050509250929050565b60008060408385031215614127578182fd5b825161413281615120565b602084015190925067ffffffffffffffff8082111561414f578283fd5b9084019060608287031215614162578283fd5b60405160608101818110838211171561417757fe5b604052825182811115614188578485fd5b61419488828601613b48565b8252506020830151828111156141a8578485fd5b6141b488828601613b48565b602083015250604083015160408201528093505050509250929050565b60008082840360808112156141e4578283fd5b83516141ef81615120565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215614220578182fd5b506040516060810181811067ffffffffffffffff8211171561423e57fe5b604052602084015161424f816150fb565b81526040848101516020830152606090940151938101939093525092909150565b600060208284031215614281578081fd5b5051919050565b60008060006060848603121561429c578081fd5b505081359360208301359350604090920135919050565b6000815180845260208085019450808401835b838110156142e2578151875295820195908201906001016142c6565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060a0604083015261434760a08301856142b3565b828103606084015261435981856142b3565b838103608090940193909352508152602001949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835260208188168185015286604085015285606085015260a06080850152845191508160a0850152825b828110156143d35785810182015185820160c0015281016143b7565b828111156143e4578360c084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156144d657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016144a4565b505050838103828501526144ea81866142b3565b9695505050505050565b600060208252611b8060208301846142b3565b60006060825261451a60608301866142b3565b828103602084015261452c81866142b3565b905082810360408401526144ea81856142b3565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f4d41585f43555252454e43590000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a204e554c4c5f544f54414c5f4c49515549444954590000000000000000606082015260800190565b60208082526035908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944000000606082015260800190565b60208082526043908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e5f5452414e5346455260608201527f5245440000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526045908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944535f4160608201527f4d4f554e54000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526042908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f4445504f53495460608201527f4544000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e908201527f63793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526044908201527f4e696674797377617045786368616e6765235f676574546f6b656e526573657260408201527f7665733a20554e534f525445445f4f525f4455504c49434154455f544f4b454e60608201527f5f49445300000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526044908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f5452414e53464560608201527f5252454400000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20494e56414c49445f43555252454e43595f414d4f554e540000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204d41585f43555252454e43595f414d4f554e545f4558434545444544000000606082015260800190565b6020808252604a908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4e494654595f544f4b454e535f5460608201527f52414e5346455252454400000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b60208082526024908201527f4e696674797377617045786368616e67653a554e535550504f525445445f4d4560408201527f54484f4400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252603f908201527f4e696674797377617045786368616e6765236f6e45524331313535526563656960408201527f7665643a20494e56414c49445f4f4e52454345495645445f4d45535341474500606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f72656d6f76654c697175696469908201527f74793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526036908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a204e554c4c5f544f4b454e535f424f5547485400000000000000000000606082015260800190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20444541444c494e455f45584345454445440000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f2043555252454e43595f504f4f4c5f464f5242494444454e0000000000000000606082015260800190565b60208082526037908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20494e53554646494349454e545f544f4b454e53000000000000000000606082015260800190565b60208082526033908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f544f4b454e535f414d4f554e5400000000000000000000000000606082015260800190565b60208082526034908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a204e554c4c5f544f4b454e535f534f4c44000000000000000000000000606082015260800190565b6020808252602c908201527f4e696674797377617045786368616e67652367657442757950726963653a204560408201527f4d5054595f524553455256450000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f4e696674797377617045786368616e67652367657453656c6c50726963653a2060408201527f454d5054595f5245534552564500000000000000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4d4554484f440000000000000000606082015260800190565b60208082526046908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f5452414e5360608201527f4645525245440000000000000000000000000000000000000000000000000000608082015260a00190565b90815260200190565b60405181810167ffffffffffffffff811182821017156150d557fe5b604052919050565b600067ffffffffffffffff8211156150f157fe5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff8116811461511d57600080fd5b50565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461511d57600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135354d696e744275726e2362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a26469706673582212200de16fc0245d81d028816ad311c89dbbc3d6e964494193026135bf9ad24f1ca264736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x552C CODESIZE SUB DUP1 PUSH3 0x552C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x62 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST PUSH3 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x81 SWAP1 PUSH3 0x15F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND CALLER OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP5 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP4 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE EQ PUSH3 0xD9 JUMPI PUSH1 0x0 PUSH3 0xDC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x4 DUP1 SLOAD SWAP2 ISZERO ISZERO PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x1AA SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x134 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH3 0x13F DUP5 PUSH3 0x102 JUMP JUMPDEST SWAP3 POP PUSH3 0x14F PUSH1 0x20 DUP6 ADD PUSH3 0x102 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E676523636F6E7374727563746F723A494E PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x159053125117D253941555 PUSH1 0xAA SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH2 0x5372 DUP1 PUSH3 0x1BA PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x135 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x863ED300 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xBE571468 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xF23A6E61 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0xFCA16C3B EQ PUSH2 0x2EC JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0xBE571468 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2B3 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x863ED300 EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xA9C2E36C EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x280 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x2BEF5E38 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x46ADF5CA GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x46ADF5CA EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x6EE8E134 EQ PUSH2 0x23F JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x2BEF5E38 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x201 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x10FE9AE8 EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x209B96C5 EQ PUSH2 0x1CE JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4BD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x183 PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0x3DA5 JUMP JUMPDEST PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x50B0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AC PUSH2 0x1A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F77 JUMP JUMPDEST PUSH2 0x337 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x4540 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x42ED JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x1DC CALLDATASIZE PUSH1 0x4 PUSH2 0x3E93 JUMP JUMPDEST PUSH2 0x43A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x44F4 JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x3E93 JUMP JUMPDEST PUSH2 0x4DB JUMP JUMPDEST PUSH2 0x214 PUSH2 0x20F CALLDATASIZE PUSH1 0x4 PUSH2 0x3C63 JUMP JUMPDEST PUSH2 0x573 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x21E PUSH2 0x67E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x23A CALLDATASIZE PUSH1 0x4 PUSH2 0x3DD0 JUMP JUMPDEST PUSH2 0x69F JUMP JUMPDEST PUSH2 0x183 PUSH2 0x24D CALLDATASIZE PUSH1 0x4 PUSH2 0x4288 JUMP JUMPDEST PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x260 CALLDATASIZE PUSH1 0x4 PUSH2 0x3ED3 JUMP JUMPDEST PUSH2 0x880 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D74 JUMP JUMPDEST PUSH2 0x9E3 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0xA7C JUMP JUMPDEST PUSH2 0x293 PUSH2 0x28E CALLDATASIZE PUSH1 0x4 PUSH2 0x3C63 JUMP JUMPDEST PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x454B JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x2AE CALLDATASIZE PUSH1 0x4 PUSH2 0x3ED3 JUMP JUMPDEST PUSH2 0x110F JUMP JUMPDEST PUSH2 0x1AC PUSH2 0x2C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C2B JUMP JUMPDEST PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x293 PUSH2 0x2D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D0D JUMP JUMPDEST PUSH2 0x12A2 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x2E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D0D JUMP JUMPDEST PUSH2 0x13D3 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x2FA CALLDATASIZE PUSH1 0x4 PUSH2 0x4288 JUMP JUMPDEST PUSH2 0x14D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x3CA JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x416 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x47F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x8 PUSH1 0x0 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x49D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4BF JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x485 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x520 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x7 PUSH1 0x0 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x53E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x560 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x526 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x59C JUMPI POP PUSH2 0x59C DUP6 CALLER PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x5F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5265 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x65D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51D9 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x669 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1556 JUMP JUMPDEST PUSH2 0x677 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1880 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x6FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5239 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x73F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x7E4 JUMPI PUSH1 0x1 PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x75E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x7AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7D1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x745 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP1 ISZERO PUSH2 0x7FD JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x833 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4F73 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x841 DUP6 PUSH2 0x3E3 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x84F DUP3 DUP6 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x869 DUP4 PUSH2 0x863 DUP9 PUSH2 0x3E8 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 PUSH2 0x1B87 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x874 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x8C5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x9D8 JUMPI PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xFDD58E ADDRESS DUP12 DUP12 DUP7 DUP2 DUP2 LT PUSH2 0x900 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x924 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x950 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST SWAP1 POP PUSH2 0x9B8 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x985 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP3 PUSH1 0x8 PUSH1 0x0 DUP14 DUP14 DUP9 DUP2 DUP2 LT PUSH2 0x99D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x7EC JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9C4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x8CB JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x3F93 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xB2D8104700000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xCCB JUMPI PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xB4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x502D JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 EQ PUSH2 0xB87 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x476F JUMP JUMPDEST PUSH1 0x6 SLOAD DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xB97 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD EQ PUSH2 0xBD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x468F JUMP JUMPDEST PUSH2 0xBDE PUSH2 0x39DD JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xBF2 SWAP2 SWAP1 PUSH2 0x4048 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xC1D JUMPI DUP2 MLOAD PUSH2 0xC1F JUMP JUMPDEST DUP8 JUMPDEST SWAP1 POP PUSH1 0x60 PUSH2 0xC50 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC3D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD DUP7 PUSH2 0x1BFB JUMP JUMPDEST SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD38BC77E62E239476B3E25620D73F29A4A188E808AAD79F4A81AAF44871A7A30 DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 MLOAD PUSH2 0xCBB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP PUSH2 0x10E3 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xDB08EC9700000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xE2B JUMPI PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xD66 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x49B3 JUMP JUMPDEST PUSH2 0xD6E PUSH2 0x3A1B JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xD82 SWAP2 SWAP1 PUSH2 0x41D1 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xDAD JUMPI DUP2 MLOAD PUSH2 0xDAF JUMP JUMPDEST DUP8 JUMPDEST SWAP1 POP PUSH1 0x60 PUSH2 0xDC8 DUP9 DUP9 DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH2 0x1FBF JUMP JUMPDEST SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x89E4DBDD48F69E7920342E9AD9691B9A7150F254E6A0AF177CCFD2556AAB8BCD DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD PUSH2 0xCBB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x82DA2B7300000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xF03 JUMPI PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xEC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x46EC JUMP JUMPDEST PUSH2 0xECE PUSH2 0x3A52 JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xEE2 SWAP2 SWAP1 PUSH2 0x3FAF JUMP JUMPDEST SWAP1 POP DUP1 SWAP2 POP POP PUSH2 0xEFD DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x22C9 JUMP JUMPDEST POP PUSH2 0x10E3 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x5C0BF25900000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xFC2 JUMPI CALLER ADDRESS EQ PUSH2 0xF86 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4AF0 JUMP JUMPDEST PUSH2 0xF8E PUSH2 0x3A6C JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xFA2 SWAP2 SWAP1 PUSH2 0x4115 JUMP JUMPDEST SWAP1 POP DUP1 SWAP2 POP POP PUSH2 0xEFD DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x293E JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xC8C323F900000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x10B1 JUMPI PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x105D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x47F2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x106D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD EQ PUSH2 0x10AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x468F JUMP JUMPDEST PUSH2 0x10E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4FD0 JUMP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x112A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1154 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x9D8 JUMPI PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xFDD58E ADDRESS DUP12 DUP12 DUP7 DUP2 DUP2 LT PUSH2 0x118F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11B3 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1203 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST SWAP1 POP PUSH2 0x1247 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x1214 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x8 PUSH1 0x0 DUP13 DUP13 DUP8 DUP2 DUP2 LT PUSH2 0x122B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 PUSH2 0x14D7 JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1253 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x115A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x12F9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1313 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x132C DUP9 DUP9 DUP5 DUP5 DUP9 PUSH2 0xA98 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x13A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4C2D JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x13FC JUMPI POP PUSH2 0x13FC DUP6 CALLER PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x1451 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x517A PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x14BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x514F PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x14C9 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2EA7 JUMP JUMPDEST PUSH2 0x677 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x2FAF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP1 ISZERO PUSH2 0x14E8 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x151E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1536 PUSH2 0x3E8 PUSH2 0x1530 DUP7 DUP9 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x154A PUSH2 0x3E3 PUSH2 0x1530 DUP7 DUP10 PUSH2 0x31A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x9D8 DUP3 DUP3 PUSH2 0x3217 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x15B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51A4 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1778 JUMPI PUSH2 0x1646 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x15CC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1621 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x31A0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x167C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x171F DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x16A5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x16FA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1B87 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x1755 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x15B5 JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1825 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x180D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1864 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x184C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x189F DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x325E JUMP JUMPDEST ISZERO PUSH2 0x1AEF JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1957 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x193F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1996 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x197E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19D2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19BA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x19FF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1A38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1AED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x52C4 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B06 JUMPI POP PUSH1 0x0 PUSH2 0x331 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B13 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1B80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236D756C3A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1B80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x1C6F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP4 LT ISZERO PUSH2 0x1CD1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4632 JUMP JUMPDEST DUP6 MLOAD DUP5 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1CEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1D15 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1D31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1D5B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x1D67 DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E64 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D82 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1DB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP3 GT PUSH2 0x1DF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4CE8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x1E11 DUP5 DUP4 DUP6 PUSH2 0x14D7 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E1D DUP9 DUP3 PUSH2 0x31A0 JUMP JUMPDEST SWAP8 POP DUP1 DUP11 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x1E2C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x1E41 DUP3 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 SWAP6 DUP7 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP6 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x1D6C SWAP1 POP JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1EFA JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xF242432A SWAP3 PUSH2 0x1EC7 SWAP3 ADDRESS SWAP3 DUP12 SWAP3 DUP10 SWAP2 ADD PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2EB2C2D6 SWAP1 PUSH2 0x1F56 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x430E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x2033 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE DUP6 MLOAD TIMESTAMP DUP5 LT ISZERO PUSH2 0x2097 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4875 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x20B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x20DA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x20F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2120 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x212C DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2232 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2147 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x215F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2177 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP3 GT PUSH2 0x21BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x21DF DUP5 PUSH2 0x21D9 DUP6 DUP3 PUSH2 0x31A0 JUMP JUMPDEST DUP5 PUSH2 0x7EC JUMP JUMPDEST SWAP1 POP PUSH2 0x21EB DUP9 DUP3 PUSH2 0x1B87 JUMP JUMPDEST SWAP8 POP PUSH2 0x21F7 DUP3 DUP3 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP10 MLOAD DUP2 SWAP1 DUP12 SWAP1 DUP9 SWAP1 DUP2 LT PUSH2 0x2216 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x2131 SWAP2 POP POP JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x226D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x48D2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xF242432A SWAP3 PUSH2 0x1F56 SWAP3 ADDRESS SWAP3 DUP12 SWAP3 DUP10 SWAP2 ADD PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x233A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP2 LT ISZERO PUSH2 0x239C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4D45 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x23B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x23E3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x23FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2429 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x246F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x247B DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x27DB JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2496 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x24C6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT PUSH2 0x2505 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x253F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4E5C JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x259E JUMPI PUSH1 0x6 SLOAD DUP3 EQ ISZERO PUSH2 0x259E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4DA2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2714 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x25D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x2605 PUSH2 0x25F6 DUP6 DUP9 PUSH2 0x1AF7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2600 DUP6 DUP10 PUSH2 0x31A0 JUMP JUMPDEST PUSH2 0x3217 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 DUP16 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2616 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x2656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4A93 JUMP JUMPDEST PUSH2 0x2660 DUP5 DUP4 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2679 DUP13 DUP4 PUSH2 0x1B87 JUMP JUMPDEST SWAP12 POP DUP4 PUSH2 0x269C DUP7 PUSH2 0x1530 DUP5 PUSH2 0x268F JUMPI PUSH1 0x0 PUSH2 0x2692 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP7 SWAP1 PUSH1 0xFF AND PUSH2 0x31A0 JUMP JUMPDEST DUP2 PUSH2 0x26A3 JUMPI INVALID JUMPDEST DIV DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26B0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26C9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x26FB DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26E4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH2 0x1B87 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH2 0x27D0 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2722 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH4 0x3B9ACA00 DUP2 LT ISZERO PUSH2 0x276A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4A36 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH2 0x2785 DUP10 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE DUP9 MLOAD SWAP1 SWAP10 POP DUP2 SWAP1 DUP10 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x27A9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x27C2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0x2480 JUMP JUMPDEST POP PUSH2 0x27F7 DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x357D JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xF242432A SWAP2 DUP14 SWAP2 ADDRESS SWAP2 SWAP1 DUP10 SWAP1 PUSH2 0x2854 SWAP1 PUSH32 0xC8C323F900000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x20 ADD PUSH2 0x454B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2883 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4373 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x289D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x403F9DC4582DAE52D3EEB4A22D37540FFB13C32D964C92EC5AC0D3D5628DA316 DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD PUSH2 0x28FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x29AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP2 GT PUSH2 0x2A10 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4B73 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2A2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2A57 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2A73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2A9D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2AB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2AE3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x2AEF DUP11 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2CEE JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2B0A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2B22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2B3A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x2B96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP3 PUSH2 0x2BB1 DUP7 DUP5 PUSH2 0x1AF7 JUMP JUMPDEST DUP2 PUSH2 0x2BB8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x2BC8 DUP8 DUP8 PUSH2 0x1AF7 JUMP JUMPDEST DUP2 PUSH2 0x2BCF JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP16 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x2BDE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 LT ISZERO PUSH2 0x2C1F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4C8A JUMP JUMPDEST DUP15 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x2C2B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 LT ISZERO PUSH2 0x2C6C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x2C76 DUP5 DUP8 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2C8F DUP4 DUP4 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2CA8 DUP13 DUP4 PUSH2 0x1B87 JUMP JUMPDEST SWAP12 POP DUP1 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2CB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2CD0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 POP PUSH2 0x2AF4 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH2 0x2CFA ADDRESS DUP12 DUP12 PUSH2 0x37B2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF242432A ADDRESS DUP14 PUSH1 0x6 SLOAD DUP9 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D5D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0x2EB2C2D6 SWAP2 POP PUSH2 0x2DEB SWAP1 ADDRESS SWAP1 DUP16 SWAP1 DUP16 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x430E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x711E9BCB94B4CF7BC99C1CB938EDC75AC7E85A136838E90ABF6EE1F5ADEBD423 DUP12 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2E67 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2EE2 SWAP1 DUP3 PUSH2 0x31A0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP9 DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP3 DUP8 AND DUP3 MSTORE DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x2F33 SWAP1 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2FCE DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x325E JUMP JUMPDEST ISZERO PUSH2 0x1AEF JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3087 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x306F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x30B4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x30EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1AED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5303 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x3211 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x3223 JUMPI INVALID JUMPDEST MOD ISZERO PUSH2 0x3245 JUMPI PUSH2 0x323E PUSH1 0x1 DUP5 DUP7 DUP2 PUSH2 0x3237 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3252 JUMP JUMPDEST DUP3 DUP5 DUP2 PUSH2 0x324E JUMPI INVALID JUMPDEST DIV PUSH1 0x0 JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1B80 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 DUP2 EQ ISZERO PUSH2 0x3389 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x3 SLOAD DUP7 MLOAD SWAP3 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH3 0xFDD58E SWAP2 POP ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x32F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3318 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3344 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3368 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3375 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP2 POP PUSH2 0x419 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x33A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x33CC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP ADDRESS DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x33DD JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x34A9 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3419 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3430 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT PUSH2 0x346F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4930 JUMP JUMPDEST ADDRESS DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x347C JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3405 JUMP JUMPDEST POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x4E1273F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x4E1273F4 SWAP1 PUSH2 0x3502 SWAP1 DUP5 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4487 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x351A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x352E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x3574 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3F3C JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x419 JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x35D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5294 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x36A1 JUMPI PUSH2 0x3648 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x35F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x16FA JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP8 MLOAD SWAP1 SWAP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x367E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x35DC JUMP JUMPDEST POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x374F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3737 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x378E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3776 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x677 PUSH1 0x0 DUP7 DUP7 DUP7 GAS DUP8 PUSH2 0x1880 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x380D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5209 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x38D5 JUMPI PUSH2 0x387C DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3827 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1621 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x38B2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x3810 JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3983 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x396B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x39C2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39AA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x419 DUP2 PUSH2 0x50FB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3AA9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AC0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3AEA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3AFD PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST PUSH2 0x50B9 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3B1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3B3D JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3B21 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B58 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3B66 PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3B87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3B3D JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3B8A JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3BB6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3BCA JUMPI INVALID JUMPDEST PUSH2 0x3BFB PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x50B9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3C12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3C3D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3C48 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3C58 DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3C7A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3C85 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3CB1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3CBD DUP10 DUP4 DUP11 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CD2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3CDE DUP10 DUP4 DUP11 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CF3 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3D00 DUP9 DUP3 DUP10 ADD PUSH2 0x3BA6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3D24 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3D2F DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3D3F DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D68 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3D00 DUP9 DUP3 DUP10 ADD PUSH2 0x3BA6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D86 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3D91 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3C58 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DB7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DC2 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DE2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DF9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E0C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3E1A PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x3E3A JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x3E65 JUMPI DUP1 CALLDATALOAD PUSH2 0x3E51 DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x3E3E JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x3E7C JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3E89 DUP6 DUP3 DUP7 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EA5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3EBB JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3EC7 DUP6 DUP3 DUP7 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3EE8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3EFF JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x3F0B DUP9 DUP4 DUP10 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3F23 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x3F30 DUP8 DUP3 DUP9 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F4D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3F63 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3F6F DUP5 DUP3 DUP6 ADD PUSH2 0x3B48 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F88 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1B80 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FA4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1B80 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FC1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x3FCC DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3FE9 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x40 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x3FFC JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x4011 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x4022 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x402E DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x405A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4065 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4082 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x80 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x4095 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x40AA JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x40B6 DUP4 PUSH2 0x3A8D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x40C9 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x40D5 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x40EC JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x40F8 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4127 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4132 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x414F JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x60 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x4162 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x4177 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x4188 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x4194 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x41A8 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x41B4 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x41E4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x41EF DUP2 PUSH2 0x5120 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD SLT ISZERO PUSH2 0x4220 JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x423E JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x424F DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 DUP2 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4281 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x429C JUMPI DUP1 DUP2 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42E2 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x42C6 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4347 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x42B3 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x4359 DUP2 DUP6 PUSH2 0x42B3 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP9 AND DUP2 DUP6 ADD MSTORE DUP7 PUSH1 0x40 DUP6 ADD MSTORE DUP6 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP6 ADD MSTORE DUP5 MLOAD SWAP2 POP DUP2 PUSH1 0xA0 DUP6 ADD MSTORE DUP3 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x43D3 JUMPI DUP6 DUP2 ADD DUP3 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xC0 ADD MSTORE DUP2 ADD PUSH2 0x43B7 JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x43E4 JUMPI DUP4 PUSH1 0xC0 DUP5 DUP8 ADD ADD MSTORE JUMPDEST POP POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0xC0 ADD SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x44D6 JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x44A4 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE PUSH2 0x44EA DUP2 DUP7 PUSH2 0x42B3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1B80 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x42B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x451A PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x42B3 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x452C DUP2 DUP7 PUSH2 0x42B3 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x44EA DUP2 DUP6 PUSH2 0x42B3 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204E554C4C5F4D41585F43555252454E43590000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A204E554C4C5F544F54414C5F4C49515549444954590000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F63757272656E6379546F546F6B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656E3A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F4944000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x43 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E5F5452414E53464552 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5245440000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x45 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F4944535F41 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4D4F554E54000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x42 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E535F4445504F534954 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4544000000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x63793A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x40 SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E SWAP1 DUP3 ADD MSTORE PUSH32 0x63793A20494E53554646494349454E545F43555252454E43595F414D4F554E54 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x44 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F676574546F6B656E5265736572 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7665733A20554E534F525445445F4F525F4455504C49434154455F544F4B454E PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5F49445300000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x44 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E535F5452414E534645 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5252454400000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x20494E56414C49445F43555252454E43595F414D4F554E540000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204D41585F43555252454E43595F414D4F554E545F4558434545444544000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x4A SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F4E494654595F544F4B454E535F54 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x52414E5346455252454400000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67653A554E535550504F525445445F4D45 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x54484F4400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3F SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135355265636569 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7665643A20494E56414C49445F4F4E52454345495645445F4D45535341474500 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x40 SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 SWAP1 DUP3 ADD MSTORE PUSH32 0x74793A20494E53554646494349454E545F43555252454E43595F414D4F554E54 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F63757272656E6379546F546F6B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656E3A204E554C4C5F544F4B454E535F424F5547485400000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x20444541444C494E455F45584345454445440000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2043555252454E43595F504F4F4C5F464F5242494444454E0000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A20494E53554646494349454E545F544F4B454E53000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204E554C4C5F544F4B454E535F414D4F554E5400000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x63793A204E554C4C5F544F4B454E535F534F4C44000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67652367657442757950726963653A2045 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4D5054595F524553455256450000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67652367657453656C6C50726963653A20 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x454D5054595F5245534552564500000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F4D4554484F440000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x46 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F5452414E53 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4645525245440000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x50D5 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x50F1 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x511D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x511D JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x68427572 PUSH15 0x3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x684D696E PUSH21 0x3A20494E56414C49445F4152524159535F4C454E47 SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD 0xE1 PUSH16 0xC0245D81D028816AD311C89DBBC3D6E9 PUSH5 0x4941930261 CALLDATALOAD 0xBF SWAP11 0xD2 0x4F SHR LOG2 PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "1185:33420:0:-:0;;;2686:545;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1199:11:8;:18;;-1:-1:-1;1199:18:8;1213:4;1199:18;;;-1:-1:-1;2790:33:0;;;;;;:64;;-1:-1:-1;;2827:27:0;;;;2790:64;2775:138;;;;-1:-1:-1;2775:138:0;;;;;;;:::i;:::-;;;;;;;;;2919:7;:20;;2929:10;-1:-1:-1;2919:20:0;;;;;;;2945:5;:28;;;;-1:-1:-1;2945:28:0;;;;;;;;;2979:8;:34;;;;;;;;;;;;;;3019:10;:24;;;3184:27;:42;;3221:5;3184:42;;;3214:4;3184:42;3163:18;:63;;;;;-1:-1:-1;3163:63:0;-1:-1:-1;3163:63:0;;;;;;;;;-1:-1:-1;1185:33420:0;;-1:-1:-1;;1185:33420:0;14:179:33;95:13;;-1:-1:-1;137:31:33;;127:42;;117:2;;183:1;180;173:12;117:2;76:117;;;:::o;198:368::-;;;;355:2;343:9;334:7;330:23;326:32;323:2;;;376:6;368;361:22;323:2;404:42;436:9;404:42;:::i;:::-;394:52;;465:51;512:2;501:9;497:18;465:51;:::i;:::-;455:61;;556:2;545:9;541:18;535:25;525:35;;313:253;;;;;:::o;571:407::-;773:2;755:21;;;812:2;792:18;;;785:30;851:34;846:2;831:18;;824:62;-1:-1:-1;917:2:33;902:18;;895:41;968:3;953:19;;745:233::o;:::-;1185:33420:0;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:33174:33",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:33",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "76:80:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "86:22:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "101:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "95:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "95:13:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "86:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "144:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "117:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "117:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "117:33:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "55:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "66:5:33",
                            "type": ""
                          }
                        ],
                        "src": "14:142:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "251:310:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "300:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "309:6:33"
                                        },
                                        {
                                          "name": "length",
                                          "nodeType": "YulIdentifier",
                                          "src": "317:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "302:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "302:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "302:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "279:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "287:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "275:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "275:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "294:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "271:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "271:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "264:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "264:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "261:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "335:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "358:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "345:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "345:20:33"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:6:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "408:30:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "arrayPos",
                                          "nodeType": "YulIdentifier",
                                          "src": "417:8:33"
                                        },
                                        {
                                          "name": "arrayPos",
                                          "nodeType": "YulIdentifier",
                                          "src": "427:8:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "410:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "410:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "410:26:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "380:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "388:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "377:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "377:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "374:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "447:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "463:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "471:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "459:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "459:17:33"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "447:8:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "539:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "548:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "551:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "541:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "541:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "541:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "499:6:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "511:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "519:4:33",
                                                "type": "",
                                                "value": "0x20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "507:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "507:17:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "495:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "495:30:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "527:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "491:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "491:41:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "534:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:50:33"
                              },
                              "nodeType": "YulIf",
                              "src": "485:2:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "214:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "222:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "230:8:33",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "240:6:33",
                            "type": ""
                          }
                        ],
                        "src": "161:400:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "636:622:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "685:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "694:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "701:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "687:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "687:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "687:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "664:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "672:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "660:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "660:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "679:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "656:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "656:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "649:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "646:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "718:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "745:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "732:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "732:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "722:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "761:78:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "831:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "785:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "785:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "770:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "770:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "761:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "848:16:33",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "859:5:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "852:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "880:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "887:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "873:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "873:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "873:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "903:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "913:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "907:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "926:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "937:5:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "944:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "933:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "933:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "926:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "956:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "971:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "979:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "967:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "967:15:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "960:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1041:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1050:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1053:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1043:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1043:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1043:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1005:6:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1017:6:33"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1025:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "1013:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1013:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1001:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1001:28:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1031:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "997:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "997:37:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1036:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "994:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "994:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "991:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1066:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1075:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1070:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1134:118:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1155:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "1173:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1160:12:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1160:17:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1148:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1148:30:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1148:30:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1191:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1202:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1207:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1198:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1198:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "1191:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1223:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "1234:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1239:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1230:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1230:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "1223:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1096:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1099:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1093:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1093:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1107:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1109:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1118:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1121:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1114:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1114:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1109:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1089:3:33",
                                "statements": []
                              },
                              "src": "1085:167:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "610:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "618:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "626:5:33",
                            "type": ""
                          }
                        ],
                        "src": "566:692:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1344:608:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1393:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1402:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1409:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1395:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1395:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1395:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1372:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1380:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1368:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1368:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1387:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1364:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1364:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1357:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1357:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1354:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1426:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1446:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1440:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1440:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1430:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1462:78:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1532:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "1486:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1486:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1471:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1471:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1462:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1549:16:33",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "1560:5:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "1553:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1581:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1588:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1574:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1574:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1574:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1604:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1614:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1608:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1627:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1638:5:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1645:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1634:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1634:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1627:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1657:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1672:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1680:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1668:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1668:15:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "1661:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1742:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1751:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1754:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1744:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1744:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1744:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1706:6:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1718:6:33"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "1726:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "1714:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1714:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1702:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1702:28:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1732:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1698:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1698:37:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1737:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1695:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1695:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1692:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1767:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1776:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1771:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1835:111:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1856:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "1867:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1861:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1861:10:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1849:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1849:23:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1849:23:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1885:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1896:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1901:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1892:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1892:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "1885:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1917:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "1928:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "1933:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1924:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1924:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "1917:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1797:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1800:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1794:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1794:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1808:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1810:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1819:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1822:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1815:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1815:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1810:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1790:3:33",
                                "statements": []
                              },
                              "src": "1786:160:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1318:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1326:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1334:5:33",
                            "type": ""
                          }
                        ],
                        "src": "1263:689:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2011:526:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2060:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "2069:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "2076:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2062:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2062:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2062:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2039:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2047:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2035:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2035:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "2054:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2031:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2031:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2024:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2024:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2021:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2093:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2120:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2107:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2107:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "2097:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2170:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "2172:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2172:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2172:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2142:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2150:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2139:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2139:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2136:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2192:126:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "2228:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2236:4:33",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2224:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2224:17:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2243:66:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2220:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2220:90:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2312:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2216:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2216:101:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "2201:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2201:117:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "2192:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "2334:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2341:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2327:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2327:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2327:21:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2400:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2409:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2412:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2402:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2402:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2402:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2371:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "2379:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2367:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2367:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2388:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2363:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2363:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "2395:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2360:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2360:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2357:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "2442:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2449:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2438:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2438:16:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2460:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2468:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2456:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2456:17:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "2475:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "2425:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2425:57:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2425:57:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "2506:5:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "2513:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2502:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2502:18:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2522:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2498:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2498:29:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2529:1:33",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2491:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2491:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2491:40:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1985:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1993:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "2001:5:33",
                            "type": ""
                          }
                        ],
                        "src": "1957:580:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2629:315:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2675:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2684:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2692:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2677:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2677:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2677:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2650:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2659:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2646:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2646:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2671:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2642:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2642:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2639:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2710:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2736:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2723:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2723:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2714:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2782:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2797:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2807:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2821:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2853:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2864:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2849:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2849:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2836:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2836:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2825:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2904:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2877:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2877:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2877:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2921:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "2931:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2921:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2587:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2598:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2610:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2618:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2542:402:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3146:932:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3193:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3202:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3210:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3195:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3195:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3195:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3167:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3176:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3163:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3163:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3188:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3159:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3159:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3156:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3228:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3254:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3241:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3241:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3232:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3300:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3273:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3273:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3273:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3315:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3325:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3315:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3339:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3371:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3382:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3367:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3367:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3354:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3354:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3343:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3422:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3395:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3395:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3395:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3439:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3449:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3439:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3465:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3496:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3507:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3492:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3492:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3479:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3479:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3469:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3520:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3530:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3524:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3575:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3584:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3592:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3577:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3577:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3577:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3563:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3571:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3560:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3560:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3557:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3610:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3659:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3670:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3655:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3655:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3679:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "3620:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3620:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3610:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3696:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3729:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3740:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3725:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3725:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3712:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3712:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3700:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3773:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3782:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3790:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3775:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3775:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3775:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3759:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3769:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3756:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3756:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3753:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3808:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3857:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3868:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3853:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3853:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3879:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "3818:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3818:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3808:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3896:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3929:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3940:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3925:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3925:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3912:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3912:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3900:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3974:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3983:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3991:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3976:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3976:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3976:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3960:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3970:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3957:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3957:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3954:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4009:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4042:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4053:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4038:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4038:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4064:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "4019:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4019:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4009:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3080:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3091:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3103:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3111:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3119:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3127:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3135:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2949:1129:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4230:613:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4277:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4286:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4294:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4279:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4279:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4279:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4251:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4260:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4247:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4247:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4272:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4243:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4243:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4240:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4312:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4338:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4325:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4325:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4316:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4384:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4357:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4357:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4357:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4399:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4409:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4399:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4423:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4455:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4466:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4451:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4451:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4438:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4438:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4427:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4506:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4479:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4479:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4479:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4523:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4533:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4523:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4549:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4576:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4587:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4572:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4572:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4559:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4559:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4549:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4600:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4627:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4638:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4623:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4623:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4610:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4610:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4600:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4651:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4682:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4693:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4678:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4678:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4665:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4665:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4655:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4741:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4750:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4758:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4743:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4743:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4743:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4713:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4721:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4710:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4710:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4707:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4776:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4809:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4820:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4805:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4805:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4829:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "4786:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4786:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4776:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4164:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4175:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4187:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4195:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4203:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4211:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "4219:6:33",
                            "type": ""
                          }
                        ],
                        "src": "4083:760:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4932:354:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4978:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4987:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4995:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4980:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4980:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4980:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4953:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4962:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4949:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4949:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4974:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4945:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4945:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4942:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5013:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5039:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5026:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5026:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5017:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5085:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5058:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5058:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5058:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5100:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5110:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5100:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5124:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5156:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5167:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5152:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5152:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5139:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5139:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5128:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5228:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5237:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5245:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5230:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5230:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5230:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5193:7:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "5216:7:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "5209:6:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5209:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "5202:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5202:23:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5190:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5190:36:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5183:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5183:44:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5180:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5263:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5273:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5263:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4890:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4901:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4913:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4921:6:33",
                            "type": ""
                          }
                        ],
                        "src": "4848:438:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5378:240:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5424:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5433:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5441:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5426:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5426:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5426:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5399:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5408:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5395:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5395:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5420:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5391:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5391:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5388:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5459:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5485:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5472:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5472:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5463:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5531:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5504:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5504:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5504:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5546:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5556:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5546:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5570:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5597:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5608:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5593:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5593:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5580:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5580:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5570:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5336:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5347:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5359:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5367:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5291:327:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5760:1178:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5806:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5815:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5823:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5808:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5808:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5808:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5781:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5790:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5777:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5777:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5802:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5773:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5773:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5770:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5841:37:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5868:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5855:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5855:23:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5845:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5887:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5897:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5891:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5942:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5951:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5959:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5944:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5944:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5944:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5930:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5938:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5927:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5927:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5924:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5977:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5991:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6002:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5987:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5987:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5981:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6057:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6066:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6074:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6059:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6059:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6059:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6036:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6040:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6032:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6032:13:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6047:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6028:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6028:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6021:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6021:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6018:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6092:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6119:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6106:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6106:16:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6096:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6131:80:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "6203:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "6157:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6157:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "6142:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6142:69:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "6135:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6220:16:33",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "6233:3:33"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6224:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "6252:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6257:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6245:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6245:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6245:19:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6273:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6283:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "6277:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6296:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "6307:3:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "6312:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6303:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6303:12:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "6296:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6324:22:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6339:2:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "6343:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6335:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6335:11:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "6328:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6405:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6414:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6422:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6407:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6407:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6407:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "6369:2:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "6377:6:33"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "6385:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "6373:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6373:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6365:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6365:24:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "6391:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6361:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6361:33:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6396:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6358:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6358:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6355:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6440:15:33",
                              "value": {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "6449:6:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6444:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6513:195:33",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "6527:30:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "6553:3:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "6540:12:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6540:17:33"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "6531:5:33",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "6597:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "validator_revert_t_address",
                                        "nodeType": "YulIdentifier",
                                        "src": "6570:26:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6570:33:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6570:33:33"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "6623:3:33"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "6628:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6616:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6616:18:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6616:18:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6647:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "6658:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6663:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6654:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6654:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "6647:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6679:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "6690:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6695:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6686:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6686:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "6679:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6475:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6478:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6472:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6472:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6486:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6488:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6497:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6500:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6493:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6493:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6488:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6468:3:33",
                                "statements": []
                              },
                              "src": "6464:244:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6717:15:33",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "6727:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6717:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6741:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6774:9:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6770:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6770:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6757:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6757:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6745:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6818:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6827:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6835:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6820:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6820:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6820:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6804:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6814:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6801:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6801:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6798:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6853:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6902:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "6913:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6898:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6898:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6924:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "6863:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6863:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6853:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5718:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5729:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5741:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5749:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5623:1315:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7048:358:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7094:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7103:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7111:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7096:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7096:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7096:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7069:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7078:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7065:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7065:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7090:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7061:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7061:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7058:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7129:37:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7156:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7143:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7143:23:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7133:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7209:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7218:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7226:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7211:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7211:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7211:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7181:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7189:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7178:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7178:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7175:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7244:102:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7318:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7329:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7314:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7314:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7338:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "7270:43:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7270:76:33"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7248:8:33",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7258:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7355:18:33",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "7365:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7355:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7382:18:33",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "7392:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7382:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7006:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7017:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7029:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7037:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6943:463:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7568:658:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7614:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7623:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7631:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7616:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7616:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7616:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7589:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7598:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7585:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7585:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7610:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7581:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7581:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7578:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7649:37:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7676:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7663:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7663:23:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7653:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7695:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7705:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7699:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7750:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7759:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7767:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7752:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7752:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7752:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7738:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7746:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7735:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7735:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7732:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7785:102:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7859:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7870:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7855:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7855:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7879:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "7811:43:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7811:76:33"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7789:8:33",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7799:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7896:18:33",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "7906:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7896:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7923:18:33",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "7933:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7923:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7950:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7983:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7994:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7979:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7979:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7966:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7966:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7954:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8027:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8036:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8044:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8029:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8029:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8029:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8013:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8023:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8010:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8010:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8007:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8062:104:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8136:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8147:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8132:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8132:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8158:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "8088:43:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8088:78:33"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8066:8:33",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8076:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8175:18:33",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "8185:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8175:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8202:18:33",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "8212:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "8202:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7510:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7521:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7533:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7541:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7549:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7557:6:33",
                            "type": ""
                          }
                        ],
                        "src": "7411:815:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8337:283:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8383:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8392:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8400:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8385:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8385:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8385:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8358:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8367:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8354:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8354:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8379:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8350:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8350:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8347:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8418:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8438:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8432:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8432:16:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8422:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8491:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8500:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8508:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8493:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8493:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8493:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8463:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8471:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8460:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8460:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8457:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8526:88:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8586:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8597:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8582:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8582:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8606:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "8536:45:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8536:78:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8526:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8303:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8314:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8326:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8231:389:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8694:188:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8740:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8749:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8757:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8742:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8742:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8742:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8715:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8724:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8711:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8711:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8736:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8707:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8707:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8704:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8775:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8801:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8788:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8788:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8779:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8846:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "8820:25:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8820:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8820:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8861:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8871:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8861:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8660:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8671:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8683:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8625:257:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8967:181:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9013:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "9022:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "9030:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9015:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9015:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9015:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8988:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8997:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8984:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8984:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9009:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8980:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8980:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8977:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9048:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9067:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9061:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9061:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9052:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9112:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9086:25:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9086:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9086:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9127:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9137:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9127:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8933:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8944:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8956:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8887:261:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9283:865:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9329:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "9338:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "9346:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9331:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9331:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9331:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9304:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9313:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9300:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9300:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9325:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9296:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9296:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9293:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9364:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9383:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9377:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9377:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9368:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9428:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9402:25:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9402:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9402:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9443:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9453:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9443:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9467:39:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9491:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9502:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9487:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9487:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9481:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9481:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9471:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9515:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9525:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9519:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9570:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9579:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9587:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9572:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9572:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9572:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9558:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9566:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9555:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9555:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9552:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9605:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9619:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9630:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9615:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9615:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "9609:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9675:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9684:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9692:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9677:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9677:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9677:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9657:7:33"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "9666:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9653:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9653:16:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9671:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9649:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9649:25:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9646:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9710:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9730:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9724:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9724:9:33"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "9714:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9742:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "9764:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9772:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9760:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9760:15:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "9746:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9834:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "9836:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9836:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9836:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9793:10:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9805:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9790:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9790:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9813:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9825:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9810:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9810:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "9787:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9787:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9784:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9863:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "9867:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9856:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9856:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9856:22:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9887:25:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9909:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9903:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9903:9:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9891:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9941:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9950:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9958:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9943:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9943:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9943:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9927:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9937:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9924:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9924:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9921:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "9983:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "10041:2:33"
                                          },
                                          {
                                            "name": "offset_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "10045:8:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10037:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10037:17:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10056:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_array$_t_uint256_$dyn_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "9991:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9991:73:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9976:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9976:89:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9976:89:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10085:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10093:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10081:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10081:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "10108:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10112:2:33",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10104:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10104:11:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "10098:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10098:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10074:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10074:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10074:43:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10126:16:33",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "10136:6:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10126:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4t_struct$_AddLiquidityObj_$2104_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9241:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9252:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9264:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9272:6:33",
                            "type": ""
                          }
                        ],
                        "src": "9153:995:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10280:1152:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10326:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10335:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10343:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10328:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10328:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10328:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10301:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10310:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10297:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10297:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10322:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10293:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10293:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10290:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10361:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10380:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10374:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10374:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10365:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10425:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "10399:25:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10399:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10399:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10440:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10450:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10440:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10464:39:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10488:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10499:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10484:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10484:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10478:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10478:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "10468:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10512:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10522:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10516:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10567:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10576:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10584:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10569:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10569:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10569:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10555:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10563:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10552:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10552:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10549:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10602:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10616:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10627:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10612:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10612:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10606:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10674:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10683:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "10691:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10676:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10676:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10676:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10654:7:33"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10663:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10650:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10650:16:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10668:4:33",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10646:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10646:27:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10643:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10709:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10729:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10723:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10723:9:33"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10713:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10741:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10763:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10771:4:33",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10759:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10759:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10745:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10835:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "10837:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10837:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10837:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10794:10:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10806:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10791:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10791:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10814:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10826:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10811:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10811:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "10788:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10788:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10785:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10864:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10868:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10857:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10857:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10857:22:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10895:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10935:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_address_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "10903:31:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10903:35:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10888:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10888:51:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10888:51:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10948:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10974:2:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10978:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10970:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10970:11:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10964:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10964:18:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10952:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11011:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11020:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11028:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11013:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11013:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11013:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10997:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11007:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10994:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10994:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10991:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11057:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11065:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11053:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11053:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "11120:2:33"
                                          },
                                          {
                                            "name": "offset_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "11124:8:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "11116:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11116:17:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11135:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_array$_t_uint256_$dyn_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "11070:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11070:73:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11046:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11046:98:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11046:98:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11153:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11179:2:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11183:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11175:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11175:11:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11169:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11169:18:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11157:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11216:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11225:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11233:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11218:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11218:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11218:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11202:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11212:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11199:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11199:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11196:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11262:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11270:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11258:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11258:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "11325:2:33"
                                          },
                                          {
                                            "name": "offset_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "11329:8:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "11321:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11321:17:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11340:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_array$_t_uint256_$dyn_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "11275:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11275:73:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11251:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11251:98:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11251:98:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11369:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11377:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11365:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11365:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "11392:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "11396:2:33",
                                            "type": "",
                                            "value": "96"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "11388:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11388:11:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "11382:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11382:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11358:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11358:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11358:43:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11410:16:33",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "11420:6:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11410:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4t_struct$_BuyTokensObj_$2091_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10238:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10249:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10261:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10269:6:33",
                            "type": ""
                          }
                        ],
                        "src": "10153:1279:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11570:1074:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11616:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11625:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11633:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11618:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11618:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11618:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11591:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11600:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11587:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11587:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11612:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11583:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11583:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11580:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11651:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11670:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11664:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11664:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11655:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11715:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "11689:25:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11689:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11689:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11730:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11740:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11730:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11754:39:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11778:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11789:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11774:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11774:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11768:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11768:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11758:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11802:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11812:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11806:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11857:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11866:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11874:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11859:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11859:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11859:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11845:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11853:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11842:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11842:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11839:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11892:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11906:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11917:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11902:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11902:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11896:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11964:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11973:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11981:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11966:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11966:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11966:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11944:7:33"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11953:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11940:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11940:16:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11958:4:33",
                                    "type": "",
                                    "value": "0x60"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11936:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11936:27:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11933:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11999:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12019:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12013:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12013:9:33"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "12003:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12031:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "12053:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12061:4:33",
                                    "type": "",
                                    "value": "0x60"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12049:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12049:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "12035:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12125:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "12127:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12127:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12127:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12084:10:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12096:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "12081:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12081:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12104:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12116:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "12101:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12101:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "12078:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12078:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12075:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12154:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "12158:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12147:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12147:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12147:22:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12178:25:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12200:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12194:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12194:9:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12182:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12232:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12241:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12249:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12234:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12234:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12234:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12218:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12228:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12215:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12215:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12212:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "12274:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "12332:2:33"
                                          },
                                          {
                                            "name": "offset_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "12336:8:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12328:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12328:17:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12347:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_array$_t_uint256_$dyn_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "12282:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12282:73:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12267:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12267:89:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12267:89:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12365:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "12391:2:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12395:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12387:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12387:11:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12381:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12381:18:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "12369:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12428:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12437:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12445:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12430:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12430:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12430:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12414:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12424:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12411:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12411:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12408:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12474:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12482:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12470:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12470:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "12537:2:33"
                                          },
                                          {
                                            "name": "offset_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "12541:8:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12533:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12533:17:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12552:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_array$_t_uint256_$dyn_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "12487:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12487:73:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12463:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12463:98:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12463:98:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12581:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12589:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12577:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12577:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "12604:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12608:2:33",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12600:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12600:11:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "12594:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12594:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12570:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12570:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12570:43:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12622:16:33",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "12632:6:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12622:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4t_struct$_RemoveLiquidityObj_$2113_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11528:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11539:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11551:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11559:6:33",
                            "type": ""
                          }
                        ],
                        "src": "11437:1207:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12777:793:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12787:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12801:7:33"
                                  },
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12810:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "12797:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12797:23:33"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12791:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12845:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12854:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12862:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12847:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12847:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12847:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12836:2:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12840:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12832:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12832:12:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12829:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12880:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12899:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12893:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12893:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12884:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12944:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "12918:25:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12918:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12918:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12959:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12969:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12959:6:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13073:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13082:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13090:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13075:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13075:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13075:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12994:2:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12998:66:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12990:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12990:75:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13067:4:33",
                                    "type": "",
                                    "value": "0x60"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12986:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12986:86:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12983:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13108:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13128:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13122:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13122:9:33"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "13112:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13140:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "13162:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13170:4:33",
                                    "type": "",
                                    "value": "0x60"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13158:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13158:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "13144:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13250:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "13252:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13252:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13252:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13193:10:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13205:18:33",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13190:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13190:34:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13229:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13241:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13226:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13226:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "13187:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13187:62:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13184:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13279:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "13283:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13272:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13272:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13272:22:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13303:40:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13328:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13339:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13324:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13324:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13318:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13318:25:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13307:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13379:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "13352:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13352:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13352:35:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "13403:6:33"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13411:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13396:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13396:23:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13396:23:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13439:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13447:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13435:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13435:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "13462:9:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13473:2:33",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13458:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13458:18:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "13452:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13452:25:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13428:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13428:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13428:50:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13498:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13506:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13494:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13494:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "13521:9:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13532:4:33",
                                            "type": "",
                                            "value": "0x60"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13517:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13517:20:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "13511:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13511:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13487:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13487:52:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13487:52:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13548:16:33",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "13558:6:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13548:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4t_struct$_SellTokensObj_$2098_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12735:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12746:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12758:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12766:6:33",
                            "type": ""
                          }
                        ],
                        "src": "12649:921:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13656:113:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13702:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13711:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13719:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13704:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13704:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13704:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13677:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13686:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13673:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13673:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13698:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13669:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13669:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13666:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13737:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13753:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13747:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13747:16:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13737:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13622:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13633:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13645:6:33",
                            "type": ""
                          }
                        ],
                        "src": "13575:194:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13878:222:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13924:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "13933:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "13941:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13926:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13926:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13926:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13899:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13908:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13895:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13895:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13920:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13891:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13891:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13888:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13959:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13982:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13969:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13969:23:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13959:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14001:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14028:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14039:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14024:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14024:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14011:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14011:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14001:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14052:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14079:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14090:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14075:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14075:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14062:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14062:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "14052:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13828:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13839:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13851:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13859:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "13867:6:33",
                            "type": ""
                          }
                        ],
                        "src": "13774:326:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14172:376:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14182:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14202:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14196:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14196:12:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "14186:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "14224:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "14229:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14217:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14217:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14217:19:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14245:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14255:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14249:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14268:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "14279:3:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14284:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14275:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14275:12:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "14268:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14296:28:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14314:5:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14321:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14310:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14310:14:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "14300:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14333:12:33",
                              "value": {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "14342:3:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "14337:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14403:120:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "14424:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "14435:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "14429:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14429:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14417:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14417:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14417:26:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14456:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "14467:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14472:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14463:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14463:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "14456:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14488:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "14502:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14510:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14498:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14498:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "14488:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "14365:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "14368:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14362:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14362:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "14376:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14378:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "14387:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14390:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14383:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14383:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "14378:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "14358:3:33",
                                "statements": []
                              },
                              "src": "14354:169:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14532:10:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "14539:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "14532:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_t_array$_t_uint256_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "14149:5:33",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "14156:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "14164:3:33",
                            "type": ""
                          }
                        ],
                        "src": "14105:443:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14654:125:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14664:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14676:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14687:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14672:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14672:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14664:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14706:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14721:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14729:42:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "14717:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14717:55:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14699:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14699:74:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14699:74:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14623:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14634:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14645:4:33",
                            "type": ""
                          }
                        ],
                        "src": "14553:226:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15169:542:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15179:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15189:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15183:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15247:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15262:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15270:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15258:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15258:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15240:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15240:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15240:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15294:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15305:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15290:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15290:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15314:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15322:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15310:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15310:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15283:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15283:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15283:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15346:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15357:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15342:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15342:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15362:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15335:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15335:31:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15335:31:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15375:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15424:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15436:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15447:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15432:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15432:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "15389:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15389:63:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15379:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15472:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15483:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15468:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15468:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15492:6:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15500:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15488:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15488:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15461:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15461:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15461:50:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15520:64:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "15569:6:33"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15577:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "15534:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15534:50:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "15524:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15604:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15615:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15600:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15600:19:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "15625:6:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15633:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15621:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15621:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15593:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15593:51:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15593:51:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15660:6:33"
                                  },
                                  {
                                    "name": "tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "15668:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15653:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15653:20:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15653:20:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15682:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15694:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15702:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15690:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15690:15:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15682:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15114:9:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "15125:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15133:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15141:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15149:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15160:4:33",
                            "type": ""
                          }
                        ],
                        "src": "14784:927:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15947:798:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15957:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15967:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15961:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16025:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16040:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16048:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16036:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16036:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16018:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16018:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16018:34:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16061:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16071:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "16065:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16093:9:33"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16104:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16089:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16089:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16113:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16121:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16109:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16109:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16082:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16082:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16082:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16145:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16156:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16141:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16141:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "16161:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16134:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16134:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16134:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16188:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16199:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16184:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16184:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "16204:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16177:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16177:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16177:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16231:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16242:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16227:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16227:19:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16248:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16220:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16220:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16220:32:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16261:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "16281:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16275:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16275:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "16265:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16308:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16319:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16304:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16304:19:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16325:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16297:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16297:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16297:35:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16341:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "16350:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "16345:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16413:91:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "16442:9:33"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "16453:1:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "16438:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "16438:17:33"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "16457:3:33",
                                              "type": "",
                                              "value": "192"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "16434:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "16434:27:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value4",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "16477:6:33"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "16485:1:33"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "16473:3:33"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "16473:14:33"
                                                },
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "16489:2:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "16469:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "16469:23:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "16463:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "16463:30:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "16427:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16427:67:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16427:67:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "16374:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16377:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16371:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16371:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "16385:19:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "16387:15:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "16396:1:33"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "16399:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "16392:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16392:10:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "16387:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "16367:3:33",
                                "statements": []
                              },
                              "src": "16363:141:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16538:70:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "16567:9:33"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "16578:6:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "16563:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "16563:22:33"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "16587:3:33",
                                              "type": "",
                                              "value": "192"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "16559:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "16559:32:33"
                                        },
                                        {
                                          "name": "tail",
                                          "nodeType": "YulIdentifier",
                                          "src": "16593:4:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "16552:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16552:46:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16552:46:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "16519:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16522:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16516:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16516:13:33"
                              },
                              "nodeType": "YulIf",
                              "src": "16513:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16617:122:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16633:9:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "16652:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "16660:2:33",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "16648:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "16648:15:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "16665:66:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "16644:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16644:88:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16629:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16629:104:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16735:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16625:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16625:114:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16617:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15884:9:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "15895:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "15903:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15911:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15919:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15927:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15938:4:33",
                            "type": ""
                          }
                        ],
                        "src": "15716:1029:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17035:368:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17045:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17055:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17049:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17113:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17128:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17136:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17124:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17124:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17106:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17106:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17106:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17160:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17171:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17156:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17156:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17180:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17188:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17176:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17176:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17149:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17149:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17149:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17212:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17223:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17208:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17208:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "17228:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17201:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17201:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17201:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17255:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17266:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17251:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17251:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "17271:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17244:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17244:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17244:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17298:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17309:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17294:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17294:19:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17315:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17287:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17287:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17287:32:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17339:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17350:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17335:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17335:19:33"
                                  },
                                  {
                                    "name": "tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "17356:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17328:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17328:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17328:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17370:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17382:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17393:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17378:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17378:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17370:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16980:9:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16991:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16999:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17007:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17015:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17026:4:33",
                            "type": ""
                          }
                        ],
                        "src": "16750:653:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17537:168:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17547:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17559:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17570:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17555:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17555:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17547:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17589:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17604:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17612:42:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17600:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17600:55:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17582:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17582:74:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17582:74:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17676:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17687:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17672:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17672:18:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17692:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17665:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17665:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17665:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17498:9:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17509:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17517:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17528:4:33",
                            "type": ""
                          }
                        ],
                        "src": "17408:297:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17939:635:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17949:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17967:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17978:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17963:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17963:18:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17953:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17997:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18008:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17990:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17990:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17990:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18020:17:33",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "18031:6:33"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "18024:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18046:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18066:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18060:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18060:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "18050:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18089:6:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18097:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18082:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18082:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18082:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18113:25:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18124:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18135:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18120:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18120:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "18113:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18147:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18157:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18151:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18170:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18188:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18196:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18184:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18184:15:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "18174:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18208:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "18217:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "18212:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18279:169:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "18300:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18315:6:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "18309:5:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "18309:13:33"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "18324:42:33",
                                              "type": "",
                                              "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "18305:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "18305:62:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "18293:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18293:75:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18293:75:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "18381:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "18392:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "18397:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "18388:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18388:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "18381:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "18413:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "18427:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "18435:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "18423:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18423:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "18413:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "18241:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18244:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18238:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18238:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "18252:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "18254:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "18263:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18266:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "18259:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18259:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "18254:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "18234:3:33",
                                "statements": []
                              },
                              "src": "18230:218:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18468:9:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18479:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18464:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18464:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "18488:3:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18493:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "18484:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18484:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18457:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18457:47:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18457:47:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18513:55:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18556:6:33"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "18564:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "18521:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18521:47:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18513:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17900:9:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17911:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17919:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17930:4:33",
                            "type": ""
                          }
                        ],
                        "src": "17710:864:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18730:116:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18747:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18758:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18740:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18740:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18740:21:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18770:70:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18813:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18825:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18836:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18821:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18821:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "18778:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18778:62:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18770:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18699:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18710:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18721:4:33",
                            "type": ""
                          }
                        ],
                        "src": "18579:267:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19158:380:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19175:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19186:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19168:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19168:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19168:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19198:76:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "19247:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19259:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19270:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19255:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19255:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "19212:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19212:62:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19202:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19294:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19305:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19290:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19290:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19314:6:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19322:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19310:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19310:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19283:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19283:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19283:50:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19342:64:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19391:6:33"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19399:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "19356:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19356:50:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "19346:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19426:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19437:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19422:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19422:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19446:6:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19454:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19442:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19442:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19415:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19415:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19415:50:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19474:58:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "19517:6:33"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "19525:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "19482:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19482:50:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19474:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19111:9:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19122:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19130:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19138:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19149:4:33",
                            "type": ""
                          }
                        ],
                        "src": "18851:687:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19638:92:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19648:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19660:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19671:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19656:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19656:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19648:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19690:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "19715:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "19708:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19708:14:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "19701:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19701:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19683:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19683:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19683:41:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19607:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19618:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19629:4:33",
                            "type": ""
                          }
                        ],
                        "src": "19543:187:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19834:149:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19844:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19856:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19867:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19852:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19852:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19844:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19886:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19901:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19909:66:33",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19897:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19897:79:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19879:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19879:98:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19879:98:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19803:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19814:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19825:4:33",
                            "type": ""
                          }
                        ],
                        "src": "19735:248:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20162:240:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20179:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20190:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20172:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20172:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20172:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20213:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20224:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20209:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20209:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20229:2:33",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20202:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20202:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20202:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20252:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20263:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20248:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20248:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20268:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_addLiquidity:"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20241:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20241:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20241:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20323:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20334:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20319:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20319:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20339:20:33",
                                    "type": "",
                                    "value": " NULL_MAX_CURRENCY"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20312:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20312:48:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20312:48:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20369:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20381:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20392:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20377:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20377:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20369:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_0654c62a9f2b2be63178e7fdd2aaccde0c85e31a46db6b17394b62e726e93a2b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20139:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20153:4:33",
                            "type": ""
                          }
                        ],
                        "src": "19988:414:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20581:246:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20598:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20609:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20591:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20591:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20591:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20632:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20643:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20628:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20628:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20648:2:33",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20621:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20621:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20621:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20671:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20682:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20667:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20667:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20687:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_removeLiquidi"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20660:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20660:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20660:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20742:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20753:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20738:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20738:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20758:26:33",
                                    "type": "",
                                    "value": "ty: NULL_TOTAL_LIQUIDITY"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20731:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20731:54:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20731:54:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20794:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20806:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20817:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20802:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20802:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20794:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_195a2af155f348fe72edf949630ba8e5fbeb87c9117c53de7afed26bab0ea494__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20558:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20572:4:33",
                            "type": ""
                          }
                        ],
                        "src": "20407:420:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21006:243:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21023:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21034:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21016:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21016:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21016:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21057:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21068:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21053:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21053:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21073:2:33",
                                    "type": "",
                                    "value": "53"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21046:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21046:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21046:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21096:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21107:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21092:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21092:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21112:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_currencyToTok"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21085:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21085:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21085:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21167:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21178:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21163:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21163:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21183:23:33",
                                    "type": "",
                                    "value": "en: DEADLINE_EXCEEDED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21156:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21156:51:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21156:51:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21216:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21228:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21239:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21224:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21224:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21216:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_19a3f1a625d24563dfdd73f37dff12b327fe32ae821bbbecd99a480f70182fb1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20983:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20997:4:33",
                            "type": ""
                          }
                        ],
                        "src": "20832:417:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21428:251:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21445:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21456:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21438:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21438:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21438:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21479:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21490:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21475:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21475:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21495:2:33",
                                    "type": "",
                                    "value": "61"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21468:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21468:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21468:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21518:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21529:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21514:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21514:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21534:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#onERC1155Batch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21507:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21507:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21507:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21589:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21600:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21585:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21585:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21605:31:33",
                                    "type": "",
                                    "value": "Received: INVALID_CURRENCY_ID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21578:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21578:59:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21578:59:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21646:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21658:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21669:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21654:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21654:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21646:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_19ed05f570a53a98eb1a84996f9124ea7a046c8913e9b15245b8e38dda123e3b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21405:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21419:4:33",
                            "type": ""
                          }
                        ],
                        "src": "21254:425:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21858:297:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21875:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21886:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21868:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21868:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21868:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21909:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21920:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21905:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21905:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21925:2:33",
                                    "type": "",
                                    "value": "67"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21898:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21898:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21898:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21948:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21959:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21944:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21944:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21964:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#onERC1155Batch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21937:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21937:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21937:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22019:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22030:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22015:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22015:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22035:34:33",
                                    "type": "",
                                    "value": "Received: INVALID_TOKEN_TRANSFER"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22008:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22008:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22008:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22090:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22101:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22086:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22086:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22107:5:33",
                                    "type": "",
                                    "value": "RED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22079:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22079:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22079:34:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22122:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22134:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22145:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22130:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22130:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22122:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1ed07bc7650042c2e2cbca09ab67f62eeee0338ec4d76866c3c7841a8ba4c925__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21835:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21849:4:33",
                            "type": ""
                          }
                        ],
                        "src": "21684:471:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22334:299:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22351:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22362:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22344:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22344:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22344:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22385:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22396:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22381:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22381:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22401:2:33",
                                    "type": "",
                                    "value": "69"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22374:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22374:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22374:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22424:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22435:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22420:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22420:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22440:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#onERC1155Batch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22413:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22413:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22413:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22495:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22506:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22491:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22491:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22511:34:33",
                                    "type": "",
                                    "value": "Received: INVALID_CURRENCY_IDS_A"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22484:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22484:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22484:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22566:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22577:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22562:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22562:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22583:7:33",
                                    "type": "",
                                    "value": "MOUNT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22555:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22555:36:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22555:36:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22600:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22612:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22623:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22608:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22608:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22600:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_261362078ad07f72112396c5383cdd4d9b3e7ad1d86bedee7f9a0beffcadc8b9__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22311:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22325:4:33",
                            "type": ""
                          }
                        ],
                        "src": "22160:473:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22812:296:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22829:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22840:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22822:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22822:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22822:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22863:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22874:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22859:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22859:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22879:2:33",
                                    "type": "",
                                    "value": "66"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22852:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22852:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22852:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22902:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22913:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22898:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22898:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22918:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#onERC1155Batch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22891:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22891:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22891:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22973:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22984:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22969:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22969:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "22989:34:33",
                                    "type": "",
                                    "value": "Received: INVALID_TOKENS_DEPOSIT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22962:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22962:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22962:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23044:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23055:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23040:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23040:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23061:4:33",
                                    "type": "",
                                    "value": "ED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23033:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23033:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23033:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23075:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23087:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23098:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23083:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23083:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23075:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_2c5b1b963fa773f5eb1d14179a97f8148e38211d9fa2234f9e25fd8e59ee057f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22789:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22803:4:33",
                            "type": ""
                          }
                        ],
                        "src": "22638:470:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23287:243:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23304:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23315:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23297:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23297:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23297:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23338:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23349:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23334:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23334:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23354:2:33",
                                    "type": "",
                                    "value": "53"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23327:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23327:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23327:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23377:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23388:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23373:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23373:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23393:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_tokenToCurren"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23366:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23366:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23366:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23448:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23459:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23444:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23444:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23464:23:33",
                                    "type": "",
                                    "value": "cy: DEADLINE_EXCEEDED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23437:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23437:51:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23437:51:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23497:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23509:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23520:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23505:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23505:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23497:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_372ca040d163edeef926a089768a4d493c18cb4d0d59e6a399fced9bc4b3822e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23264:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23278:4:33",
                            "type": ""
                          }
                        ],
                        "src": "23113:417:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23709:254:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23726:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23737:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23719:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23719:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23719:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23760:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23771:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23756:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23756:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23776:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23749:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23749:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23749:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23799:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23810:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23795:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23795:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23815:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_tokenToCurren"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23788:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23788:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23788:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23870:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23881:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23866:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23866:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "23886:34:33",
                                    "type": "",
                                    "value": "cy: INSUFFICIENT_CURRENCY_AMOUNT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23859:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23859:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23859:62:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "23930:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23942:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23953:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23938:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23938:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23930:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_38a63899bec963e3ae188c53efe07af8ac1478872de543a93c418dfd5caabc9b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23686:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23700:4:33",
                            "type": ""
                          }
                        ],
                        "src": "23535:428:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24142:298:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24159:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24170:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24152:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24152:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24152:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24193:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24204:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24189:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24189:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24209:2:33",
                                    "type": "",
                                    "value": "68"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24182:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24182:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24182:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24232:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24243:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24228:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24228:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24248:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_getTokenReser"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24221:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24221:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24221:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24303:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24314:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24299:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24299:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24319:34:33",
                                    "type": "",
                                    "value": "ves: UNSORTED_OR_DUPLICATE_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24292:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24292:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24292:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24374:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24385:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24370:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24370:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24391:6:33",
                                    "type": "",
                                    "value": "_IDS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24363:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24363:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24363:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24407:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24419:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24430:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24415:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24415:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24407:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_3c92fb0012d8f7f599e7edb6764fcce8419a8f2d98a6433110bcd3a46a32fae1__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24119:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24133:4:33",
                            "type": ""
                          }
                        ],
                        "src": "23968:472:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24619:298:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24636:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24647:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24629:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24629:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24629:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24670:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24681:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24666:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24666:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24686:2:33",
                                    "type": "",
                                    "value": "68"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24659:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24659:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24659:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24709:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24720:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24705:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24705:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24725:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#onERC1155Batch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24698:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24698:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24698:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24780:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24791:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24776:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24776:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24796:34:33",
                                    "type": "",
                                    "value": "Received: INVALID_TOKENS_TRANSFE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24769:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24769:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24769:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24851:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24862:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24847:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24847:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24868:6:33",
                                    "type": "",
                                    "value": "RRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24840:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24840:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24840:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24884:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24896:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24907:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24892:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24892:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24884:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_437272d75d3565950010088748c6e6dcfafd69a3d8caafcc6fa62779aab93510__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24596:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24610:4:33",
                            "type": ""
                          }
                        ],
                        "src": "24445:472:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25096:246:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25113:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25124:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25106:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25106:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25106:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25147:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25158:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25143:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25143:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25163:2:33",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25136:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25136:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25136:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25186:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25197:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25182:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25182:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25202:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_addLiquidity:"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25175:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25175:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25175:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25257:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25268:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25253:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25253:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25273:26:33",
                                    "type": "",
                                    "value": " INVALID_CURRENCY_AMOUNT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25246:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25246:54:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25246:54:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25309:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25321:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25332:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25317:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25317:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25309:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_44174fac91788d8526e52183ec0fd7e31400b263d9af8503e8d3fcf7e5d626bd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25073:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25087:4:33",
                            "type": ""
                          }
                        ],
                        "src": "24922:420:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25521:251:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25538:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25549:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25531:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25531:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25531:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25572:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25583:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25568:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25568:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25588:2:33",
                                    "type": "",
                                    "value": "61"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25561:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25561:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25561:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25611:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25622:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25607:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25607:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25627:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_addLiquidity:"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25600:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25600:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25600:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25682:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25693:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25678:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25678:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25698:31:33",
                                    "type": "",
                                    "value": " MAX_CURRENCY_AMOUNT_EXCEEDED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25671:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25671:59:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25671:59:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25739:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25751:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25762:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25747:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25747:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25739:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4d5d44db915b9cc1bc9713a04531b8ab3fff17206fb41c24946b0a410a7be41e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25498:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25512:4:33",
                            "type": ""
                          }
                        ],
                        "src": "25347:425:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25951:304:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25968:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25979:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25961:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25961:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25961:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26002:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26013:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25998:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25998:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26018:2:33",
                                    "type": "",
                                    "value": "74"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25991:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25991:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25991:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26041:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26052:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26037:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26037:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26057:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#onERC1155Batch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26030:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26030:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26030:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26112:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26123:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26108:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26108:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26128:34:33",
                                    "type": "",
                                    "value": "Received: INVALID_NIFTY_TOKENS_T"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26101:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26101:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26101:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26183:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26194:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26179:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26179:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26200:12:33",
                                    "type": "",
                                    "value": "RANSFERRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26172:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26172:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26172:41:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26222:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26234:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26245:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26230:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26230:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26222:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_50a674e1ca705baa08d06baf97a65a6e4f207105f4d4e98933522d69491be95a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25928:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25942:4:33",
                            "type": ""
                          }
                        ],
                        "src": "25777:478:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26434:243:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26451:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26462:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26444:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26444:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26444:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26485:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26496:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26481:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26481:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26501:2:33",
                                    "type": "",
                                    "value": "53"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26474:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26474:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26474:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26524:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26535:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26520:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26520:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26540:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_removeLiquidi"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26513:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26513:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26513:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26595:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26606:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26591:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26591:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26611:23:33",
                                    "type": "",
                                    "value": "ty: DEADLINE_EXCEEDED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26584:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26584:51:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26584:51:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26644:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26656:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26667:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26652:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26652:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26644:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_69a6ecbdc5691599659ed07adbd82feddd2031cfa74a9799fc308d88a936def0__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26411:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26425:4:33",
                            "type": ""
                          }
                        ],
                        "src": "26260:417:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26856:226:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26873:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26884:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26866:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26866:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26866:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26907:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26918:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26903:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26903:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26923:2:33",
                                    "type": "",
                                    "value": "36"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26896:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26896:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26896:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26946:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26957:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26942:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26942:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26962:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange:UNSUPPORTED_ME"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26935:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26935:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26935:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27017:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27028:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27013:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27013:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27033:6:33",
                                    "type": "",
                                    "value": "THOD"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27006:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27006:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27006:34:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27049:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27061:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27072:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27057:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27057:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27049:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6c876790e22acc3a34b7f27a514e097da93f634c7e233b6351f8105c6aaed54f__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26833:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26847:4:33",
                            "type": ""
                          }
                        ],
                        "src": "26682:400:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27261:253:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27278:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27289:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27271:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27271:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27271:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27312:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27323:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27308:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27308:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27328:2:33",
                                    "type": "",
                                    "value": "63"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27301:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27301:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27301:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27351:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27362:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27347:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27347:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27367:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#onERC1155Recei"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27340:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27340:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27340:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27422:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27433:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27418:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27418:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27438:33:33",
                                    "type": "",
                                    "value": "ved: INVALID_ONRECEIVED_MESSAGE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27411:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27411:61:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27411:61:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27481:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27493:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27504:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27489:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27489:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27481:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_80ab4d0f9a7f6d892eebce349f16ee0deec8f61bc67a1a42983c8a69e65417a6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27238:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27252:4:33",
                            "type": ""
                          }
                        ],
                        "src": "27087:427:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27693:254:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27710:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27721:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27703:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27703:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27703:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27744:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27755:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27740:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27740:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27760:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27733:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27733:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27733:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27783:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27794:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27779:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27779:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27799:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_removeLiquidi"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27772:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27772:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27772:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27854:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27865:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27850:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27850:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27870:34:33",
                                    "type": "",
                                    "value": "ty: INSUFFICIENT_CURRENCY_AMOUNT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27843:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27843:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27843:62:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27914:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27926:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27937:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27922:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27922:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27914:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_896491f9e217e649d0415c8c902ac15dc925ae7c61df3f0e9f5a5c1433be452a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27670:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27684:4:33",
                            "type": ""
                          }
                        ],
                        "src": "27519:428:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28126:244:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28143:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28154:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28136:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28136:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28136:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28177:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28188:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28173:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28173:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28193:2:33",
                                    "type": "",
                                    "value": "54"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28166:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28166:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28166:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28216:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28227:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28212:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28212:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28232:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_currencyToTok"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28205:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28205:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28205:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28287:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28298:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28283:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28283:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28303:24:33",
                                    "type": "",
                                    "value": "en: NULL_TOKENS_BOUGHT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28276:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28276:52:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28276:52:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28337:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28349:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28360:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28345:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28345:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28337:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8ce1043a90eeb2e90affd156b2f60e05432246676878b4f40d03039b7ad176ed__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28103:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28117:4:33",
                            "type": ""
                          }
                        ],
                        "src": "27952:418:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28549:240:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28566:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28577:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28559:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28559:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28559:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28600:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28611:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28596:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28596:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28616:2:33",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28589:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28589:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28589:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28639:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28650:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28635:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28635:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28655:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_addLiquidity:"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28628:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28628:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28628:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28710:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28721:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28706:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28706:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28726:20:33",
                                    "type": "",
                                    "value": " DEADLINE_EXCEEDED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28699:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28699:48:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28699:48:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28756:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28768:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28779:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28764:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28764:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28756:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8e5451db8f097505f008848c271b3a01df07e16c92c5e51fc32aed55e8bcea35__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28526:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28540:4:33",
                            "type": ""
                          }
                        ],
                        "src": "28375:414:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28968:246:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28985:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28996:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28978:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28978:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28978:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29019:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29030:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29015:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29015:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29035:2:33",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29008:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29008:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29008:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29058:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29069:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29054:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29054:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29074:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_addLiquidity:"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29047:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29047:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29047:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29129:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29140:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29125:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29125:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29145:26:33",
                                    "type": "",
                                    "value": " CURRENCY_POOL_FORBIDDEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29118:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29118:54:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29118:54:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29181:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29193:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29204:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29189:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29189:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29181:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_8f56fd0d94eacd59df12e68b94825fe456ef793368508825261acd61b34db33e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28945:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28959:4:33",
                            "type": ""
                          }
                        ],
                        "src": "28794:420:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29393:245:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29410:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29421:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29403:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29403:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29403:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29444:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29455:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29440:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29440:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29460:2:33",
                                    "type": "",
                                    "value": "55"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29433:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29433:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29433:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29483:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29494:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29479:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29479:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29499:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_removeLiquidi"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29472:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29472:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29472:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29554:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29565:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29550:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29550:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29570:25:33",
                                    "type": "",
                                    "value": "ty: INSUFFICIENT_TOKENS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29543:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29543:53:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29543:53:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29605:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29617:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29628:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29613:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29613:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29605:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9432b32fedb5b8d42791a800b82fe98da48f6fa0407e83fd99c793fc220f1e23__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29370:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29384:4:33",
                            "type": ""
                          }
                        ],
                        "src": "29219:419:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29817:241:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29834:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29845:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29827:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29827:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29827:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29868:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29879:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29864:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29864:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29884:2:33",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29857:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29857:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29857:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29907:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29918:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29903:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29903:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29923:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_addLiquidity:"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29896:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29896:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29896:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29978:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29989:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29974:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29974:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29994:21:33",
                                    "type": "",
                                    "value": " NULL_TOKENS_AMOUNT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29967:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29967:49:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29967:49:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30025:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30037:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30048:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30033:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30033:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30025:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_9600902febc493c3a01e11fedb1af10a0adefc762e5e4d749716589879688d82__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29794:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29808:4:33",
                            "type": ""
                          }
                        ],
                        "src": "29643:415:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30237:242:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30254:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30265:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30247:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30247:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30247:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30288:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30299:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30284:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30284:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30304:2:33",
                                    "type": "",
                                    "value": "52"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30277:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30277:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30277:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30327:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30338:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30323:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30323:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30343:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#_tokenToCurren"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30316:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30316:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30316:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30398:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30409:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30394:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30394:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30414:22:33",
                                    "type": "",
                                    "value": "cy: NULL_TOKENS_SOLD"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30387:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30387:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30387:50:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30446:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30458:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30469:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30454:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30454:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30446:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_987e4f9b2a0479f8ad056955933c71c0c79ed4a1dfb5d8ebe7a93defabffdfce__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30214:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30228:4:33",
                            "type": ""
                          }
                        ],
                        "src": "30063:416:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30658:234:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30675:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30686:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30668:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30668:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30668:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30709:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30720:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30705:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30705:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30725:2:33",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30698:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30698:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30698:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30748:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30759:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30744:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30744:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30764:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#getBuyPrice: E"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30737:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30737:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30737:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30819:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30830:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30815:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30815:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30835:14:33",
                                    "type": "",
                                    "value": "MPTY_RESERVE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30808:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30808:42:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30808:42:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30859:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30871:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30882:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30867:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30867:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30859:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a6dc61c09d9b84d199454a9e5ab583700e9384df8ecdace42e9947daaad53485__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30635:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30649:4:33",
                            "type": ""
                          }
                        ],
                        "src": "30484:408:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31071:235:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31088:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31099:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31081:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31081:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31081:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31122:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31133:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31118:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31118:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31138:2:33",
                                    "type": "",
                                    "value": "45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31111:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31111:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31111:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31161:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31172:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31157:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31157:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31177:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#getSellPrice: "
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31150:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31150:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31150:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31232:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31243:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31228:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31228:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31248:15:33",
                                    "type": "",
                                    "value": "EMPTY_RESERVE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31221:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31221:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31221:43:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31273:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31285:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31296:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31281:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31281:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31273:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b32069aab22ccf215e3be464c9761149b70171870786512bdd69a12a0bd83aa8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31048:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31062:4:33",
                            "type": ""
                          }
                        ],
                        "src": "30897:409:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31485:246:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31502:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31513:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31495:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31495:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31495:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31536:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31547:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31532:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31532:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31552:2:33",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31525:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31525:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31525:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31575:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31586:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31571:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31571:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31591:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#onERC1155Batch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31564:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31564:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31564:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31646:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31657:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31642:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31642:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "31662:26:33",
                                    "type": "",
                                    "value": "Received: INVALID_METHOD"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31635:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31635:54:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31635:54:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31698:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31710:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31721:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31706:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31706:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "31698:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_b656c14e87a7867ddeb6b0421544be2dee3e55aa8c5dce8041e99478392eba82__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31462:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31476:4:33",
                            "type": ""
                          }
                        ],
                        "src": "31311:420:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31910:300:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31927:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31938:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31920:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31920:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31920:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31961:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31972:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31957:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31957:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31977:2:33",
                                    "type": "",
                                    "value": "70"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31950:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31950:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31950:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32000:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32011:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "31996:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31996:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32016:34:33",
                                    "type": "",
                                    "value": "NiftyswapExchange#onERC1155Batch"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "31989:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31989:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31989:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32071:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32082:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32067:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32067:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32087:34:33",
                                    "type": "",
                                    "value": "Received: INVALID_CURRENCY_TRANS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32060:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32060:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32060:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "32142:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32153:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "32138:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32138:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "32159:8:33",
                                    "type": "",
                                    "value": "FERRED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32131:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32131:37:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32131:37:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32177:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32189:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32200:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32185:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32185:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32177:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c7ffe7d1440ea685ab6c9ae79bd3daf8331603102983b2141f392a77909fdde0__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31887:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "31901:4:33",
                            "type": ""
                          }
                        ],
                        "src": "31736:474:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32316:76:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "32326:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32338:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32349:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32334:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32334:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "32326:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "32368:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "32379:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32361:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32361:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32361:25:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "32285:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "32296:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "32307:4:33",
                            "type": ""
                          }
                        ],
                        "src": "32215:177:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32441:198:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "32451:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32467:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32461:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32461:9:33"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "32451:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32479:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "32501:6:33"
                                  },
                                  {
                                    "name": "size",
                                    "nodeType": "YulIdentifier",
                                    "src": "32509:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32497:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32497:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "32483:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32589:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "32591:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32591:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32591:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "32532:10:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32544:18:33",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32529:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32529:34:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "32568:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "32580:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32565:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32565:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "32526:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32526:62:33"
                              },
                              "nodeType": "YulIf",
                              "src": "32523:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32618:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "32622:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32611:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32611:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32611:22:33"
                            }
                          ]
                        },
                        "name": "allocateMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "32421:4:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "32430:6:33",
                            "type": ""
                          }
                        ],
                        "src": "32397:242:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32719:108:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32763:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "32765:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32765:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32765:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "32735:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32743:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "32732:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32732:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "32729:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32785:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "32801:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "32809:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "32797:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32797:17:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "32816:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32793:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32793:28:33"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "32785:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_t_array$_t_address_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "32699:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "32710:4:33",
                            "type": ""
                          }
                        ],
                        "src": "32644:183:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32879:109:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32966:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32975:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32978:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32968:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32968:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32968:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "32902:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "32913:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "32920:42:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "32909:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32909:54:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "32899:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32899:65:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32892:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32892:73:33"
                              },
                              "nodeType": "YulIf",
                              "src": "32889:2:33"
                            }
                          ]
                        },
                        "name": "validator_revert_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "32868:5:33",
                            "type": ""
                          }
                        ],
                        "src": "32832:156:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33039:133:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33150:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33159:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33162:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33152:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33152:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33152:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "33062:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "33073:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "33080:66:33",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "33069:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33069:78:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "33059:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33059:89:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "33052:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33052:97:33"
                              },
                              "nodeType": "YulIf",
                              "src": "33049:2:33"
                            }
                          ]
                        },
                        "name": "validator_revert_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "33028:5:33",
                            "type": ""
                          }
                        ],
                        "src": "32993:179:33"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_t_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        validator_revert_t_address(value)\n    }\n    function abi_decode_t_array$_t_uint256_$dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(length, length) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(arrayPos, arrayPos) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, mul(length, 0x20)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_t_array$_t_uint256_$dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst := array\n        mstore(array, length)\n        let _1 := 0x20\n        dst := add(array, _1)\n        let src := add(offset, _1)\n        if gt(add(add(offset, mul(length, _1)), _1), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n    }\n    function abi_decode_t_array$_t_uint256_$dyn_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := mload(offset)\n        array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst := array\n        mstore(array, length)\n        let _1 := 0x20\n        dst := add(array, _1)\n        let src := add(offset, _1)\n        if gt(add(add(offset, mul(length, _1)), _1), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, mload(src))\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n    }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        array := allocateMemory(add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20))\n        mstore(array, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array, length), 0x20), 0)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(value1, value1) }\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let length := calldataload(_2)\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _3 := 0x20\n        dst := add(dst, _3)\n        let src := add(_2, _3)\n        if gt(add(add(_2, mul(length, _3)), _3), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let value := calldataload(src)\n            validator_revert_t_address(value)\n            mstore(dst, value)\n            dst := add(dst, _3)\n            src := add(src, _3)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _3))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        let value0_1, value1_1 := abi_decode_t_array$_t_uint256_$dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value2, value2) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        let value0_1, value1_1 := abi_decode_t_array$_t_uint256_$dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        let value2_1, value3_1 := abi_decode_t_array$_t_uint256_$dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_array$_t_uint256_$dyn_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_t_array$_t_uint256_$dyn_fromMemory(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_bytes4(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4t_struct$_AddLiquidityObj_$2104_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_bytes4(value)\n        value0 := value\n        let offset := mload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 64) { revert(value1, value1) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 64)\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        let offset_1 := mload(_2)\n        if gt(offset_1, _1) { revert(value1, value1) }\n        mstore(memPtr, abi_decode_t_array$_t_uint256_$dyn_fromMemory(add(_2, offset_1), dataEnd))\n        mstore(add(memPtr, 32), mload(add(_2, 32)))\n        value1 := memPtr\n    }\n    function abi_decode_tuple_t_bytes4t_struct$_BuyTokensObj_$2091_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_bytes4(value)\n        value0 := value\n        let offset := mload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 0x80) { revert(value1, value1) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x80)\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, abi_decode_t_address_fromMemory(_2))\n        let offset_1 := mload(add(_2, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        mstore(add(memPtr, 32), abi_decode_t_array$_t_uint256_$dyn_fromMemory(add(_2, offset_1), dataEnd))\n        let offset_2 := mload(add(_2, 64))\n        if gt(offset_2, _1) { revert(value1, value1) }\n        mstore(add(memPtr, 64), abi_decode_t_array$_t_uint256_$dyn_fromMemory(add(_2, offset_2), dataEnd))\n        mstore(add(memPtr, 96), mload(add(_2, 96)))\n        value1 := memPtr\n    }\n    function abi_decode_tuple_t_bytes4t_struct$_RemoveLiquidityObj_$2113_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_bytes4(value)\n        value0 := value\n        let offset := mload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 0x60) { revert(value1, value1) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x60)\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        let offset_1 := mload(_2)\n        if gt(offset_1, _1) { revert(value1, value1) }\n        mstore(memPtr, abi_decode_t_array$_t_uint256_$dyn_fromMemory(add(_2, offset_1), dataEnd))\n        let offset_2 := mload(add(_2, 32))\n        if gt(offset_2, _1) { revert(value1, value1) }\n        mstore(add(memPtr, 32), abi_decode_t_array$_t_uint256_$dyn_fromMemory(add(_2, offset_2), dataEnd))\n        mstore(add(memPtr, 64), mload(add(_2, 64)))\n        value1 := memPtr\n    }\n    function abi_decode_tuple_t_bytes4t_struct$_SellTokensObj_$2098_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 128) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_bytes4(value)\n        value0 := value\n        if slt(add(_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x60) { revert(value1, value1) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x60)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        mstore(memPtr, value_1)\n        mstore(add(memPtr, 32), mload(add(headStart, 64)))\n        mstore(add(memPtr, 64), mload(add(headStart, 0x60)))\n        value1 := memPtr\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_encode_t_array$_t_uint256_$dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := end\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_t_array$_t_uint256_$dyn(value2, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_t_array$_t_uint256_$dyn(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        mstore(tail_2, tail)\n        tail := add(tail_2, 32)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        let _2 := 32\n        mstore(add(headStart, _2), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        let length := mload(value4)\n        mstore(add(headStart, 160), length)\n        let i := tail\n        for { } lt(i, length) { i := add(i, _2) }\n        {\n            mstore(add(add(headStart, i), 192), mload(add(add(value4, i), _2)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 192), tail)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 192)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        mstore(add(headStart, 160), tail)\n        tail := add(headStart, 192)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 64)\n        mstore(headStart, 64)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 96)\n        let _1 := 0x20\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), 0xffffffffffffffffffffffffffffffffffffffff))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        mstore(add(headStart, _1), sub(pos, headStart))\n        tail := abi_encode_t_array$_t_uint256_$dyn(value1, pos)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_t_array$_t_uint256_$dyn(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        let tail_1 := abi_encode_t_array$_t_uint256_$dyn(value0, add(headStart, 96))\n        mstore(add(headStart, 32), sub(tail_1, headStart))\n        let tail_2 := abi_encode_t_array$_t_uint256_$dyn(value1, tail_1)\n        mstore(add(headStart, 64), sub(tail_2, headStart))\n        tail := abi_encode_t_array$_t_uint256_$dyn(value2, tail_2)\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_encode_tuple_t_stringliteral_0654c62a9f2b2be63178e7fdd2aaccde0c85e31a46db6b17394b62e726e93a2b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_addLiquidity:\")\n        mstore(add(headStart, 96), \" NULL_MAX_CURRENCY\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_195a2af155f348fe72edf949630ba8e5fbeb87c9117c53de7afed26bab0ea494__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_removeLiquidi\")\n        mstore(add(headStart, 96), \"ty: NULL_TOTAL_LIQUIDITY\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_19a3f1a625d24563dfdd73f37dff12b327fe32ae821bbbecd99a480f70182fb1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 53)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_currencyToTok\")\n        mstore(add(headStart, 96), \"en: DEADLINE_EXCEEDED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_19ed05f570a53a98eb1a84996f9124ea7a046c8913e9b15245b8e38dda123e3b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 61)\n        mstore(add(headStart, 64), \"NiftyswapExchange#onERC1155Batch\")\n        mstore(add(headStart, 96), \"Received: INVALID_CURRENCY_ID\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_1ed07bc7650042c2e2cbca09ab67f62eeee0338ec4d76866c3c7841a8ba4c925__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 67)\n        mstore(add(headStart, 64), \"NiftyswapExchange#onERC1155Batch\")\n        mstore(add(headStart, 96), \"Received: INVALID_TOKEN_TRANSFER\")\n        mstore(add(headStart, 128), \"RED\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_261362078ad07f72112396c5383cdd4d9b3e7ad1d86bedee7f9a0beffcadc8b9__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 69)\n        mstore(add(headStart, 64), \"NiftyswapExchange#onERC1155Batch\")\n        mstore(add(headStart, 96), \"Received: INVALID_CURRENCY_IDS_A\")\n        mstore(add(headStart, 128), \"MOUNT\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_2c5b1b963fa773f5eb1d14179a97f8148e38211d9fa2234f9e25fd8e59ee057f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 66)\n        mstore(add(headStart, 64), \"NiftyswapExchange#onERC1155Batch\")\n        mstore(add(headStart, 96), \"Received: INVALID_TOKENS_DEPOSIT\")\n        mstore(add(headStart, 128), \"ED\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_372ca040d163edeef926a089768a4d493c18cb4d0d59e6a399fced9bc4b3822e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 53)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_tokenToCurren\")\n        mstore(add(headStart, 96), \"cy: DEADLINE_EXCEEDED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_38a63899bec963e3ae188c53efe07af8ac1478872de543a93c418dfd5caabc9b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_tokenToCurren\")\n        mstore(add(headStart, 96), \"cy: INSUFFICIENT_CURRENCY_AMOUNT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_3c92fb0012d8f7f599e7edb6764fcce8419a8f2d98a6433110bcd3a46a32fae1__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 68)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_getTokenReser\")\n        mstore(add(headStart, 96), \"ves: UNSORTED_OR_DUPLICATE_TOKEN\")\n        mstore(add(headStart, 128), \"_IDS\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_437272d75d3565950010088748c6e6dcfafd69a3d8caafcc6fa62779aab93510__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 68)\n        mstore(add(headStart, 64), \"NiftyswapExchange#onERC1155Batch\")\n        mstore(add(headStart, 96), \"Received: INVALID_TOKENS_TRANSFE\")\n        mstore(add(headStart, 128), \"RRED\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_44174fac91788d8526e52183ec0fd7e31400b263d9af8503e8d3fcf7e5d626bd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_addLiquidity:\")\n        mstore(add(headStart, 96), \" INVALID_CURRENCY_AMOUNT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4d5d44db915b9cc1bc9713a04531b8ab3fff17206fb41c24946b0a410a7be41e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 61)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_addLiquidity:\")\n        mstore(add(headStart, 96), \" MAX_CURRENCY_AMOUNT_EXCEEDED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_50a674e1ca705baa08d06baf97a65a6e4f207105f4d4e98933522d69491be95a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 74)\n        mstore(add(headStart, 64), \"NiftyswapExchange#onERC1155Batch\")\n        mstore(add(headStart, 96), \"Received: INVALID_NIFTY_TOKENS_T\")\n        mstore(add(headStart, 128), \"RANSFERRED\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_69a6ecbdc5691599659ed07adbd82feddd2031cfa74a9799fc308d88a936def0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 53)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_removeLiquidi\")\n        mstore(add(headStart, 96), \"ty: DEADLINE_EXCEEDED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6c876790e22acc3a34b7f27a514e097da93f634c7e233b6351f8105c6aaed54f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"NiftyswapExchange:UNSUPPORTED_ME\")\n        mstore(add(headStart, 96), \"THOD\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_80ab4d0f9a7f6d892eebce349f16ee0deec8f61bc67a1a42983c8a69e65417a6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 63)\n        mstore(add(headStart, 64), \"NiftyswapExchange#onERC1155Recei\")\n        mstore(add(headStart, 96), \"ved: INVALID_ONRECEIVED_MESSAGE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_896491f9e217e649d0415c8c902ac15dc925ae7c61df3f0e9f5a5c1433be452a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 64)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_removeLiquidi\")\n        mstore(add(headStart, 96), \"ty: INSUFFICIENT_CURRENCY_AMOUNT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8ce1043a90eeb2e90affd156b2f60e05432246676878b4f40d03039b7ad176ed__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 54)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_currencyToTok\")\n        mstore(add(headStart, 96), \"en: NULL_TOKENS_BOUGHT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8e5451db8f097505f008848c271b3a01df07e16c92c5e51fc32aed55e8bcea35__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_addLiquidity:\")\n        mstore(add(headStart, 96), \" DEADLINE_EXCEEDED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_8f56fd0d94eacd59df12e68b94825fe456ef793368508825261acd61b34db33e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_addLiquidity:\")\n        mstore(add(headStart, 96), \" CURRENCY_POOL_FORBIDDEN\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9432b32fedb5b8d42791a800b82fe98da48f6fa0407e83fd99c793fc220f1e23__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 55)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_removeLiquidi\")\n        mstore(add(headStart, 96), \"ty: INSUFFICIENT_TOKENS\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_9600902febc493c3a01e11fedb1af10a0adefc762e5e4d749716589879688d82__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_addLiquidity:\")\n        mstore(add(headStart, 96), \" NULL_TOKENS_AMOUNT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_987e4f9b2a0479f8ad056955933c71c0c79ed4a1dfb5d8ebe7a93defabffdfce__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"NiftyswapExchange#_tokenToCurren\")\n        mstore(add(headStart, 96), \"cy: NULL_TOKENS_SOLD\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_a6dc61c09d9b84d199454a9e5ab583700e9384df8ecdace42e9947daaad53485__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"NiftyswapExchange#getBuyPrice: E\")\n        mstore(add(headStart, 96), \"MPTY_RESERVE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b32069aab22ccf215e3be464c9761149b70171870786512bdd69a12a0bd83aa8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"NiftyswapExchange#getSellPrice: \")\n        mstore(add(headStart, 96), \"EMPTY_RESERVE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b656c14e87a7867ddeb6b0421544be2dee3e55aa8c5dce8041e99478392eba82__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"NiftyswapExchange#onERC1155Batch\")\n        mstore(add(headStart, 96), \"Received: INVALID_METHOD\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c7ffe7d1440ea685ab6c9ae79bd3daf8331603102983b2141f392a77909fdde0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 70)\n        mstore(add(headStart, 64), \"NiftyswapExchange#onERC1155Batch\")\n        mstore(add(headStart, 96), \"Received: INVALID_CURRENCY_TRANS\")\n        mstore(add(headStart, 128), \"FERRED\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_array$_t_address_$dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(mul(length, 0x20), 0x20)\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_t_bytes4(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n}",
                  "id": 33,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106101355760003560e01c8063863ed300116100b2578063be57146811610081578063f23a6e6111610066578063f23a6e61146102c6578063f242432a146102d9578063fca16c3b146102ec57610135565b8063be571468146102a0578063e985e9c5146102b357610135565b8063863ed30014610252578063a22cb46514610265578063a9c2e36c14610278578063bc197c811461028057610135565b80632bef5e381161010957806346adf5ca116100ee57806346adf5ca146102165780634e1273f41461022c5780636ee8e1341461023f57610135565b80632bef5e38146101ee5780632eb2c2d61461020157610135565b8062fdd58e1461017057806301ffc9a71461019957806310fe9ae8146101b9578063209b96c5146101ce575b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614bd0565b60405180910390fd5b61018361017e366004613da5565b6102ff565b60405161019091906150b0565b60405180910390f35b6101ac6101a7366004613f77565b610337565b6040516101909190614540565b6101c161041e565b60405161019091906142ed565b6101e16101dc366004613e93565b61043a565b60405161019091906144f4565b6101e16101fc366004613e93565b6104db565b61021461020f366004613c63565b610573565b005b61021e61067e565b604051610190929190614461565b6101e161023a366004613dd0565b61069f565b61018361024d366004614288565b6107ec565b6101e1610260366004613ed3565b610880565b610214610273366004613d74565b6109e3565b6101c1610a7c565b61029361028e366004613c63565b610a98565b604051610190919061454b565b6101e16102ae366004613ed3565b61110f565b6101ac6102c1366004613c2b565b611267565b6102936102d4366004613d0d565b6112a2565b6102146102e7366004613d0d565b6113d3565b6101836102fa366004614288565b6114d7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602090815260408083208484529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103ca57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b8061041657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b60035473ffffffffffffffffffffffffffffffffffffffff1690565b606081818167ffffffffffffffff8111801561045557600080fd5b5060405190808252806020026020018201604052801561047f578160200160208202803683370190505b50905060005b828110156104d2576008600087878481811061049d57fe5b905060200201358152602001908152602001600020548282815181106104bf57fe5b6020908102919091010152600101610485565b50949350505050565b606081818167ffffffffffffffff811180156104f657600080fd5b50604051908082528060200260200182016040528015610520578160200160208202803683370190505b50905060005b828110156104d2576007600087878481811061053e57fe5b9050602002013581526020019081526020016000205482828151811061056057fe5b6020908102919091010152600101610526565b3373ffffffffffffffffffffffffffffffffffffffff8616148061059c575061059c8533611267565b6105f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615265602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661065d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806151d96030913960400191505060405180910390fd5b61066985858585611556565b610677858585855a86611880565b5050505050565b60045460065473ffffffffffffffffffffffffffffffffffffffff90911691565b606081518351146106fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615239602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561071557600080fd5b5060405190808252806020026020018201604052801561073f578160200160208202803683370190505b50905060005b84518110156107e4576001600086838151811061075e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106107ae57fe5b60200260200101518152602001908152602001600020548282815181106107d157fe5b6020908102919091010152600101610745565b509392505050565b600080831180156107fd5750600082115b610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f73565b6000610841856103e3611af7565b9050600061084f8285611af7565b9050600061086983610863886103e8611af7565b90611b87565b905080828161087457fe5b04979650505050505050565b606083818167ffffffffffffffff8111801561089b57600080fd5b506040519080825280602002602001820160405280156108c5578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061090057fe5b905060200201356040518363ffffffff1660e01b8152600401610924929190614461565b60206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190614270565b90506109b887878481811061098557fe5b9050602002013582600860008d8d8881811061099d57fe5b905060200201358152602001908152602001600020546107ec565b8383815181106109c457fe5b6020908102919091010152506001016108cb565b509695505050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60055473ffffffffffffffffffffffffffffffffffffffff1690565b60008082806020019051810190610aaf9190613f93565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb2d81047000000000000000000000000000000000000000000000000000000001415610ccb5760045473ffffffffffffffffffffffffffffffffffffffff163314610b4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061502d565b8451600114610b87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061476f565b60065485600081518110610b9757fe5b602002602001015114610bd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b610bde6139dd565b83806020019051810190610bf29190614048565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610c1d578151610c1f565b875b90506060610c508360200151846040015189600081518110610c3d57fe5b6020026020010151866060015186611bfb565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fd38bc77e62e239476b3e25620d73f29a4a188e808aad79f4a81aaf44871a7a308560200151866040015185604051610cbb93929190614507565b60405180910390a35050506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fdb08ec97000000000000000000000000000000000000000000000000000000001415610e2b5760035473ffffffffffffffffffffffffffffffffffffffff163314610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906149b3565b610d6e613a1b565b83806020019051810190610d8291906141d1565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610dad578151610daf565b875b90506060610dc888888560200151866040015186611fbf565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f89e4dbdd48f69e7920342e9ad9691b9a7150f254e6a0af177ccfd2556aab8bcd8a8a85604051610cbb93929190614507565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f82da2b73000000000000000000000000000000000000000000000000000000001415610f035760035473ffffffffffffffffffffffffffffffffffffffff163314610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906146ec565b610ece613a52565b83806020019051810190610ee29190613faf565b905080915050610efd878787846000015185602001516122c9565b506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f5c0bf259000000000000000000000000000000000000000000000000000000001415610fc257333014610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614af0565b610f8e613a6c565b83806020019051810190610fa29190614115565b905080915050610efd87878784600001518560200151866040015161293e565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc8c323f90000000000000000000000000000000000000000000000000000000014156110b15760045473ffffffffffffffffffffffffffffffffffffffff16331461105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906147f2565b6006548560008151811061106d57fe5b6020026020010151146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b6110e3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614fd0565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b606083818167ffffffffffffffff8111801561112a57600080fd5b50604051908082528060200260200182016040528015611154578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061118f57fe5b905060200201356040518363ffffffff1660e01b81526004016111b3929190614461565b60206040518083038186803b1580156111cb57600080fd5b505afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190614270565b905061124787878481811061121457fe5b90506020020135600860008c8c8781811061122b57fe5b90506020020135815260200190815260200160002054836114d7565b83838151811061125357fe5b60209081029190910101525060010161115a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b6040805160018082528183019092526000916060919060208083019080368337505060408051600180825281830190925292935060609291506020808301908036833701905050905085826000815181106112f957fe5b602002602001018181525050848160008151811061131357fe5b60200260200101818152505061132c8888848488610a98565b7fffffffff00000000000000000000000000000000000000000000000000000000167fbc197c8100000000000000000000000000000000000000000000000000000000146113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c2d565b507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b3373ffffffffffffffffffffffffffffffffffffffff861614806113fc57506113fc8533611267565b611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061517a602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061514f602b913960400191505060405180910390fd5b6114c985858585612ea7565b610677858585855a86612faf565b600080831180156114e85750600082115b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f16565b60006115366103e86115308688611af7565b90611af7565b9050600061154a6103e361153086896131a0565b90506109d88282613217565b80518251146115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806151a46035913960400191505060405180910390fd5b815160005b81811015611778576116468382815181106115cc57fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b60200260200101518152602001908152602001600020546131a090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120865190919087908590811061167c57fe5b602002602001015181526020019081526020016000208190555061171f8382815181106116a557fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008785815181106116fa57fe5b6020026020010151815260200190815260200160002054611b8790919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260408120865190919087908590811061175557fe5b6020908102919091018101518252810191909152604001600020556001016115b5565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561182557818101518382015260200161180d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561186457818101518382015260200161184c565b5050505090500194505050505060405180910390a45050505050565b61189f8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561195757818101518382015260200161193f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561199657818101518382015260200161197e565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156119d25781810151838201526020016119ba565b50505050905090810190601f1680156119ff5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611a2457600080fd5b5087f1158015611a38573d6000803e3d6000fd5b50505050506040513d6020811015611a4f57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806152c4603f913960400191505060405180910390fd5b505b505050505050565b600082611b0657506000610331565b82820282848281611b1357fe5b0414611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236d756c3a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082820183811015611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b60005460609060ff16611c6f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905542831015611cd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614632565b8551848167ffffffffffffffff81118015611ceb57600080fd5b50604051908082528060200260200182016040528015611d15578160200160208202803683370190505b50925060608267ffffffffffffffff81118015611d3157600080fd5b50604051908082528060200260200182016040528015611d5b578160200160208202803683370190505b509050611d6789613295565b905060005b83811015611e645760008a8281518110611d8257fe5b6020026020010151905060008a8381518110611d9a57fe5b602002602001015190506000848481518110611db257fe5b6020026020010151905060008211611df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614ce8565b60008381526008602052604081205490611e118483856114d7565b9050611e1d88826131a0565b9750808a8781518110611e2c57fe5b6020908102919091010152611e418282611b87565b60009586526008602052604090952094909455505060019092019150611d6c9050565b508115611efa57600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611ec79230928b9289910161441c565b600060405180830381600087803b158015611ee157600080fd5b505af1158015611ef5573d6000803e3d6000fd5b505050505b6003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632eb2c2d690611f5690309089908e908e9060040161430e565b600060405180830381600087803b158015611f7057600080fd5b505af1158015611f84573d6000803e3d6000fd5b50505050505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905595945050505050565b60005460609060ff1661203357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055855142841015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614875565b60008167ffffffffffffffff811180156120b057600080fd5b506040519080825280602002602001820160405280156120da578160200160208202803683370190505b50925060608267ffffffffffffffff811180156120f657600080fd5b50604051908082528060200260200182016040528015612120578160200160208202803683370190505b50905061212c89613295565b905060005b838110156122325760008a828151811061214757fe5b6020026020010151905060008a838151811061215f57fe5b60200260200101519050600084848151811061217757fe5b60200260200101519050600082116121bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614eb9565b600083815260086020526040812054906121df846121d985826131a0565b846107ec565b90506121eb8882611b87565b97506121f782826131a0565b600086815260086020526040902055895181908b908890811061221657fe5b6020908102919091010152505060019093019250612131915050565b508682101561226d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906148d2565b600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611f569230928b9289910161441c565b60005460ff1661233a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690554281101561239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614d45565b8351600060608267ffffffffffffffff811180156123b957600080fd5b506040519080825280602002602001820160405280156123e3578160200160208202803683370190505b50905060608367ffffffffffffffff811180156123ff57600080fd5b50604051908082528060200260200182016040528015612429578160200160208202803683370190505b50905060608467ffffffffffffffff8111801561244557600080fd5b5060405190808252806020026020018201604052801561246f578160200160208202803683370190505b50905061247b89613295565b905060005b858110156127db5760008a828151811061249657fe5b6020026020010151905060008a83815181106124ae57fe5b6020026020010151905060008a84815181106124c657fe5b602002602001015111612505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614578565b6000811161253f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614e5c565b60045474010000000000000000000000000000000000000000900460ff161561259e5760065482141561259e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614da2565b60008281526007602052604090205480156127145760008381526008602052604081205486519091908790879081106125d357fe5b602002602001015190506000806126056125f68588611af790919063ffffffff16565b61260085896131a0565b613217565b91509150818f898151811061261657fe5b60200260200101511015612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a93565b6126608483611b87565b6000888152600860205260409020556126798c83611b87565b9b508361269c866115308461268f576000612692565b60015b869060ff166131a0565b816126a357fe5b048b89815181106126b057fe5b602002602001018181525050818a89815181106126c957fe5b6020026020010181815250506126fb8b89815181106126e457fe5b602002602001015186611b8790919063ffffffff16565b600088815260076020526040902055506127d092505050565b60008b858151811061272257fe5b60200260200101519050633b9aca0081101561276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a36565b60008481526008602052604090208190556127858982611b87565b6000858152600760205260409020829055885190995081908990879081106127a957fe5b602002602001018181525050808786815181106127c257fe5b602002602001018181525050505b505050600101612480565b506127f78a8a856040518060200160405280600081525061357d565b60045460065460405173ffffffffffffffffffffffffffffffffffffffff9092169163f242432a918d913091908990612854907fc8c323f9000000000000000000000000000000000000000000000000000000009060200161454b565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612883959493929190614373565b600060405180830381600087803b15801561289d57600080fd5b505af11580156128b1573d6000803e3d6000fd5b505050508973ffffffffffffffffffffffffffffffffffffffff167f403f9dc4582dae52d3eeb4a22d37540ffb13c32d964c92ec5ac0d3d5628da3168a8a856040516128ff93929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050505050505050565b60005460ff166129af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055428111612a10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614b73565b8451600060608267ffffffffffffffff81118015612a2d57600080fd5b50604051908082528060200260200182016040528015612a57578160200160208202803683370190505b50905060608367ffffffffffffffff81118015612a7357600080fd5b50604051908082528060200260200182016040528015612a9d578160200160208202803683370190505b50905060608467ffffffffffffffff81118015612ab957600080fd5b50604051908082528060200260200182016040528015612ae3578160200160208202803683370190505b509050612aef8a613295565b905060005b85811015612cee5760008b8281518110612b0a57fe5b6020026020010151905060008b8381518110612b2257fe5b602002602001015190506000848481518110612b3a57fe5b6020026020010151905060006007600085815260200190815260200160002054905060008111612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906145d5565b6000848152600860205260408120549082612bb18684611af7565b81612bb857fe5b049050600083612bc88787611af7565b81612bcf57fe5b0490508f8881518110612bde57fe5b6020026020010151821015612c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c8a565b8e8881518110612c2b57fe5b6020026020010151811015612c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614dff565b612c7684876131a0565b600088815260076020526040902055612c8f83836131a0565b600088815260086020526040902055612ca88c83611b87565b9b50808b8981518110612cb757fe5b602002602001018181525050818a8981518110612cd057fe5b6020908102919091010152505060019095019450612af49350505050565b50612cfa308b8b6137b2565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a308d600654886040518563ffffffff1660e01b8152600401612d5d949392919061441c565b600060405180830381600087803b158015612d7757600080fd5b505af1158015612d8b573d6000803e3d6000fd5b50506003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632eb2c2d69150612deb9030908f908f90899060040161430e565b600060405180830381600087803b158015612e0557600080fd5b505af1158015612e19573d6000803e3d6000fd5b505050508a73ffffffffffffffffffffffffffffffffffffffff167f711e9bcb94b4cf7bc99c1cb938edc75ac7e85a136838e90abf6ee1f5adebd4238b8585604051612e6793929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320858452909152902054612ee290826131a0565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160208181526040808420888552825280842095909555928716825282528281208582529091522054612f339082611b87565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600160209081526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b612fce8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561308757818101518382015260200161306f565b50505050905090810190601f1680156130b45780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156130d757600080fd5b5087f11580156130eb573d6000803e3d6000fd5b50505050506040513d602081101561310257600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180615303603a913960400191505060405180910390fd5b60008282111561321157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008082848161322357fe5b06156132455761323e600184868161323757fe5b0490611b87565b6001613252565b82848161324e57fe5b0460005b915091505b9250929050565b6000813f8015801590611b8057507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b8051606090600181141561338957604080516001808252818301909252606091602080830190803683375050600354865192935073ffffffffffffffffffffffffffffffffffffffff169162fdd58e9150309087906000906132f357fe5b60200260200101516040518363ffffffff1660e01b8152600401613318929190614461565b60206040518083038186803b15801561333057600080fd5b505afa158015613344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133689190614270565b8160008151811061337557fe5b602090810291909101015291506104199050565b60608167ffffffffffffffff811180156133a257600080fd5b506040519080825280602002602001820160405280156133cc578160200160208202803683370190505b50905030816000815181106133dd57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015260015b828110156134a95784818151811061341957fe5b602002602001015185600183038151811061343057fe5b60200260200101511061346f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614930565b3082828151811061347c57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101613405565b506003546040517f4e1273f400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690634e1273f4906135029084908890600401614487565b60006040518083038186803b15801561351a57600080fd5b505afa15801561352e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135749190810190613f3c565b92505050610419565b81518351146135d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152946030913960400191505060405180910390fd5b825160005b818110156136a1576136488482815181106135f357fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008885815181106116fa57fe5b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120875190919088908590811061367e57fe5b6020908102919091018101518252810191909152604001600020556001016135dc565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561374f578181015183820152602001613737565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561378e578181015183820152602001613776565b5050505090500194505050505060405180910390a461067760008686865a87611880565b81518151811461380d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152096030913960400191505060405180910390fd5b60005b818110156138d55761387c83828151811061382757fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b73ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040812086519091908790859081106138b257fe5b602090810291909101810151825281019190915260400160002055600101613810565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561398357818101518382015260200161396b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156139c25781810151838201526020016139aa565b5050505090500194505050505060405180910390a450505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600081525090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b604051806040016040528060608152602001600081525090565b60405180606001604052806060815260200160608152602001600081525090565b8051610419816150fb565b60008083601f840112613aa9578081fd5b50813567ffffffffffffffff811115613ac0578182fd5b602083019150836020808302850101111561325757600080fd5b600082601f830112613aea578081fd5b8135613afd613af8826150dd565b6150b9565b818152915060208083019084810181840286018201871015613b1e57600080fd5b60005b84811015613b3d57813584529282019290820190600101613b21565b505050505092915050565b600082601f830112613b58578081fd5b8151613b66613af8826150dd565b818152915060208083019084810181840286018201871015613b8757600080fd5b60005b84811015613b3d57815184529282019290820190600101613b8a565b600082601f830112613bb6578081fd5b813567ffffffffffffffff811115613bca57fe5b613bfb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016150b9565b9150808252836020828501011115613c1257600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215613c3d578182fd5b8235613c48816150fb565b91506020830135613c58816150fb565b809150509250929050565b600080600080600060a08688031215613c7a578081fd5b8535613c85816150fb565b94506020860135613c95816150fb565b9350604086013567ffffffffffffffff80821115613cb1578283fd5b613cbd89838a01613ada565b94506060880135915080821115613cd2578283fd5b613cde89838a01613ada565b93506080880135915080821115613cf3578283fd5b50613d0088828901613ba6565b9150509295509295909350565b600080600080600060a08688031215613d24578081fd5b8535613d2f816150fb565b94506020860135613d3f816150fb565b93506040860135925060608601359150608086013567ffffffffffffffff811115613d68578182fd5b613d0088828901613ba6565b60008060408385031215613d86578182fd5b8235613d91816150fb565b915060208301358015158114613c58578182fd5b60008060408385031215613db7578182fd5b8235613dc2816150fb565b946020939093013593505050565b60008060408385031215613de2578182fd5b823567ffffffffffffffff80821115613df9578384fd5b818501915085601f830112613e0c578384fd5b8135613e1a613af8826150dd565b80828252602080830192508086018a828387028901011115613e3a578889fd5b8896505b84871015613e65578035613e51816150fb565b845260019690960195928101928101613e3e565b509096508701359350505080821115613e7c578283fd5b50613e8985828601613ada565b9150509250929050565b60008060208385031215613ea5578182fd5b823567ffffffffffffffff811115613ebb578283fd5b613ec785828601613a98565b90969095509350505050565b60008060008060408587031215613ee8578182fd5b843567ffffffffffffffff80821115613eff578384fd5b613f0b88838901613a98565b90965094506020870135915080821115613f23578384fd5b50613f3087828801613a98565b95989497509550505050565b600060208284031215613f4d578081fd5b815167ffffffffffffffff811115613f63578182fd5b613f6f84828501613b48565b949350505050565b600060208284031215613f88578081fd5b8135611b8081615120565b600060208284031215613fa4578081fd5b8151611b8081615120565b60008060408385031215613fc1578182fd5b8251613fcc81615120565b602084015190925067ffffffffffffffff80821115613fe9578283fd5b9084019060408287031215613ffc578283fd5b60405160408101818110838211171561401157fe5b604052825182811115614022578485fd5b61402e88828601613b48565b825250602083015160208201528093505050509250929050565b6000806040838503121561405a578182fd5b825161406581615120565b602084015190925067ffffffffffffffff80821115614082578283fd5b9084019060808287031215614095578283fd5b6040516080810181811083821117156140aa57fe5b6040526140b683613a8d565b81526020830151828111156140c9578485fd5b6140d588828601613b48565b6020830152506040830151828111156140ec578485fd5b6140f888828601613b48565b604083015250606083015160608201528093505050509250929050565b60008060408385031215614127578182fd5b825161413281615120565b602084015190925067ffffffffffffffff8082111561414f578283fd5b9084019060608287031215614162578283fd5b60405160608101818110838211171561417757fe5b604052825182811115614188578485fd5b61419488828601613b48565b8252506020830151828111156141a8578485fd5b6141b488828601613b48565b602083015250604083015160408201528093505050509250929050565b60008082840360808112156141e4578283fd5b83516141ef81615120565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215614220578182fd5b506040516060810181811067ffffffffffffffff8211171561423e57fe5b604052602084015161424f816150fb565b81526040848101516020830152606090940151938101939093525092909150565b600060208284031215614281578081fd5b5051919050565b60008060006060848603121561429c578081fd5b505081359360208301359350604090920135919050565b6000815180845260208085019450808401835b838110156142e2578151875295820195908201906001016142c6565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060a0604083015261434760a08301856142b3565b828103606084015261435981856142b3565b838103608090940193909352508152602001949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835260208188168185015286604085015285606085015260a06080850152845191508160a0850152825b828110156143d35785810182015185820160c0015281016143b7565b828111156143e4578360c084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156144d657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016144a4565b505050838103828501526144ea81866142b3565b9695505050505050565b600060208252611b8060208301846142b3565b60006060825261451a60608301866142b3565b828103602084015261452c81866142b3565b905082810360408401526144ea81856142b3565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f4d41585f43555252454e43590000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a204e554c4c5f544f54414c5f4c49515549444954590000000000000000606082015260800190565b60208082526035908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944000000606082015260800190565b60208082526043908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e5f5452414e5346455260608201527f5245440000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526045908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944535f4160608201527f4d4f554e54000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526042908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f4445504f53495460608201527f4544000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e908201527f63793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526044908201527f4e696674797377617045786368616e6765235f676574546f6b656e526573657260408201527f7665733a20554e534f525445445f4f525f4455504c49434154455f544f4b454e60608201527f5f49445300000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526044908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f5452414e53464560608201527f5252454400000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20494e56414c49445f43555252454e43595f414d4f554e540000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204d41585f43555252454e43595f414d4f554e545f4558434545444544000000606082015260800190565b6020808252604a908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4e494654595f544f4b454e535f5460608201527f52414e5346455252454400000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b60208082526024908201527f4e696674797377617045786368616e67653a554e535550504f525445445f4d4560408201527f54484f4400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252603f908201527f4e696674797377617045786368616e6765236f6e45524331313535526563656960408201527f7665643a20494e56414c49445f4f4e52454345495645445f4d45535341474500606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f72656d6f76654c697175696469908201527f74793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526036908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a204e554c4c5f544f4b454e535f424f5547485400000000000000000000606082015260800190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20444541444c494e455f45584345454445440000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f2043555252454e43595f504f4f4c5f464f5242494444454e0000000000000000606082015260800190565b60208082526037908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20494e53554646494349454e545f544f4b454e53000000000000000000606082015260800190565b60208082526033908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f544f4b454e535f414d4f554e5400000000000000000000000000606082015260800190565b60208082526034908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a204e554c4c5f544f4b454e535f534f4c44000000000000000000000000606082015260800190565b6020808252602c908201527f4e696674797377617045786368616e67652367657442757950726963653a204560408201527f4d5054595f524553455256450000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f4e696674797377617045786368616e67652367657453656c6c50726963653a2060408201527f454d5054595f5245534552564500000000000000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4d4554484f440000000000000000606082015260800190565b60208082526046908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f5452414e5360608201527f4645525245440000000000000000000000000000000000000000000000000000608082015260a00190565b90815260200190565b60405181810167ffffffffffffffff811182821017156150d557fe5b604052919050565b600067ffffffffffffffff8211156150f157fe5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff8116811461511d57600080fd5b50565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461511d57600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135354d696e744275726e2362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a26469706673582212200de16fc0245d81d028816ad311c89dbbc3d6e964494193026135bf9ad24f1ca264736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x135 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x863ED300 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xBE571468 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xF23A6E61 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0xFCA16C3B EQ PUSH2 0x2EC JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0xBE571468 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2B3 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x863ED300 EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xA9C2E36C EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x280 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x2BEF5E38 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x46ADF5CA GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x46ADF5CA EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x6EE8E134 EQ PUSH2 0x23F JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x2BEF5E38 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x201 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x10FE9AE8 EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x209B96C5 EQ PUSH2 0x1CE JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4BD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x183 PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0x3DA5 JUMP JUMPDEST PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x50B0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AC PUSH2 0x1A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F77 JUMP JUMPDEST PUSH2 0x337 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x4540 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x42ED JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x1DC CALLDATASIZE PUSH1 0x4 PUSH2 0x3E93 JUMP JUMPDEST PUSH2 0x43A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x44F4 JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x3E93 JUMP JUMPDEST PUSH2 0x4DB JUMP JUMPDEST PUSH2 0x214 PUSH2 0x20F CALLDATASIZE PUSH1 0x4 PUSH2 0x3C63 JUMP JUMPDEST PUSH2 0x573 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x21E PUSH2 0x67E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x23A CALLDATASIZE PUSH1 0x4 PUSH2 0x3DD0 JUMP JUMPDEST PUSH2 0x69F JUMP JUMPDEST PUSH2 0x183 PUSH2 0x24D CALLDATASIZE PUSH1 0x4 PUSH2 0x4288 JUMP JUMPDEST PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x260 CALLDATASIZE PUSH1 0x4 PUSH2 0x3ED3 JUMP JUMPDEST PUSH2 0x880 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D74 JUMP JUMPDEST PUSH2 0x9E3 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0xA7C JUMP JUMPDEST PUSH2 0x293 PUSH2 0x28E CALLDATASIZE PUSH1 0x4 PUSH2 0x3C63 JUMP JUMPDEST PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x454B JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x2AE CALLDATASIZE PUSH1 0x4 PUSH2 0x3ED3 JUMP JUMPDEST PUSH2 0x110F JUMP JUMPDEST PUSH2 0x1AC PUSH2 0x2C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C2B JUMP JUMPDEST PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x293 PUSH2 0x2D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D0D JUMP JUMPDEST PUSH2 0x12A2 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x2E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D0D JUMP JUMPDEST PUSH2 0x13D3 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x2FA CALLDATASIZE PUSH1 0x4 PUSH2 0x4288 JUMP JUMPDEST PUSH2 0x14D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x3CA JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x416 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x47F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x8 PUSH1 0x0 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x49D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4BF JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x485 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x520 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x7 PUSH1 0x0 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x53E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x560 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x526 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x59C JUMPI POP PUSH2 0x59C DUP6 CALLER PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x5F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5265 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x65D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51D9 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x669 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1556 JUMP JUMPDEST PUSH2 0x677 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1880 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x6FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5239 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x73F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x7E4 JUMPI PUSH1 0x1 PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x75E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x7AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7D1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x745 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP1 ISZERO PUSH2 0x7FD JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x833 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4F73 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x841 DUP6 PUSH2 0x3E3 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x84F DUP3 DUP6 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x869 DUP4 PUSH2 0x863 DUP9 PUSH2 0x3E8 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 PUSH2 0x1B87 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x874 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x8C5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x9D8 JUMPI PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xFDD58E ADDRESS DUP12 DUP12 DUP7 DUP2 DUP2 LT PUSH2 0x900 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x924 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x950 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST SWAP1 POP PUSH2 0x9B8 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x985 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP3 PUSH1 0x8 PUSH1 0x0 DUP14 DUP14 DUP9 DUP2 DUP2 LT PUSH2 0x99D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x7EC JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9C4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x8CB JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x3F93 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xB2D8104700000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xCCB JUMPI PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xB4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x502D JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 EQ PUSH2 0xB87 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x476F JUMP JUMPDEST PUSH1 0x6 SLOAD DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xB97 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD EQ PUSH2 0xBD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x468F JUMP JUMPDEST PUSH2 0xBDE PUSH2 0x39DD JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xBF2 SWAP2 SWAP1 PUSH2 0x4048 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xC1D JUMPI DUP2 MLOAD PUSH2 0xC1F JUMP JUMPDEST DUP8 JUMPDEST SWAP1 POP PUSH1 0x60 PUSH2 0xC50 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC3D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD DUP7 PUSH2 0x1BFB JUMP JUMPDEST SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD38BC77E62E239476B3E25620D73F29A4A188E808AAD79F4A81AAF44871A7A30 DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 MLOAD PUSH2 0xCBB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP PUSH2 0x10E3 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xDB08EC9700000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xE2B JUMPI PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xD66 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x49B3 JUMP JUMPDEST PUSH2 0xD6E PUSH2 0x3A1B JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xD82 SWAP2 SWAP1 PUSH2 0x41D1 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xDAD JUMPI DUP2 MLOAD PUSH2 0xDAF JUMP JUMPDEST DUP8 JUMPDEST SWAP1 POP PUSH1 0x60 PUSH2 0xDC8 DUP9 DUP9 DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH2 0x1FBF JUMP JUMPDEST SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x89E4DBDD48F69E7920342E9AD9691B9A7150F254E6A0AF177CCFD2556AAB8BCD DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD PUSH2 0xCBB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x82DA2B7300000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xF03 JUMPI PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xEC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x46EC JUMP JUMPDEST PUSH2 0xECE PUSH2 0x3A52 JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xEE2 SWAP2 SWAP1 PUSH2 0x3FAF JUMP JUMPDEST SWAP1 POP DUP1 SWAP2 POP POP PUSH2 0xEFD DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x22C9 JUMP JUMPDEST POP PUSH2 0x10E3 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x5C0BF25900000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xFC2 JUMPI CALLER ADDRESS EQ PUSH2 0xF86 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4AF0 JUMP JUMPDEST PUSH2 0xF8E PUSH2 0x3A6C JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xFA2 SWAP2 SWAP1 PUSH2 0x4115 JUMP JUMPDEST SWAP1 POP DUP1 SWAP2 POP POP PUSH2 0xEFD DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x293E JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xC8C323F900000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x10B1 JUMPI PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x105D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x47F2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x106D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD EQ PUSH2 0x10AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x468F JUMP JUMPDEST PUSH2 0x10E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4FD0 JUMP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x112A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1154 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x9D8 JUMPI PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xFDD58E ADDRESS DUP12 DUP12 DUP7 DUP2 DUP2 LT PUSH2 0x118F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11B3 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1203 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST SWAP1 POP PUSH2 0x1247 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x1214 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x8 PUSH1 0x0 DUP13 DUP13 DUP8 DUP2 DUP2 LT PUSH2 0x122B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 PUSH2 0x14D7 JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1253 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x115A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x12F9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1313 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x132C DUP9 DUP9 DUP5 DUP5 DUP9 PUSH2 0xA98 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x13A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4C2D JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x13FC JUMPI POP PUSH2 0x13FC DUP6 CALLER PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x1451 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x517A PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x14BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x514F PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x14C9 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2EA7 JUMP JUMPDEST PUSH2 0x677 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x2FAF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP1 ISZERO PUSH2 0x14E8 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x151E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1536 PUSH2 0x3E8 PUSH2 0x1530 DUP7 DUP9 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x154A PUSH2 0x3E3 PUSH2 0x1530 DUP7 DUP10 PUSH2 0x31A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x9D8 DUP3 DUP3 PUSH2 0x3217 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x15B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51A4 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1778 JUMPI PUSH2 0x1646 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x15CC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1621 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x31A0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x167C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x171F DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x16A5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x16FA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1B87 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x1755 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x15B5 JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1825 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x180D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1864 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x184C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x189F DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x325E JUMP JUMPDEST ISZERO PUSH2 0x1AEF JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1957 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x193F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1996 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x197E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19D2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19BA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x19FF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1A38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1AED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x52C4 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B06 JUMPI POP PUSH1 0x0 PUSH2 0x331 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B13 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1B80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236D756C3A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1B80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x1C6F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP4 LT ISZERO PUSH2 0x1CD1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4632 JUMP JUMPDEST DUP6 MLOAD DUP5 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1CEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1D15 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1D31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1D5B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x1D67 DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E64 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D82 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1DB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP3 GT PUSH2 0x1DF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4CE8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x1E11 DUP5 DUP4 DUP6 PUSH2 0x14D7 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E1D DUP9 DUP3 PUSH2 0x31A0 JUMP JUMPDEST SWAP8 POP DUP1 DUP11 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x1E2C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x1E41 DUP3 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 SWAP6 DUP7 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP6 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x1D6C SWAP1 POP JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1EFA JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xF242432A SWAP3 PUSH2 0x1EC7 SWAP3 ADDRESS SWAP3 DUP12 SWAP3 DUP10 SWAP2 ADD PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2EB2C2D6 SWAP1 PUSH2 0x1F56 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x430E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x2033 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE DUP6 MLOAD TIMESTAMP DUP5 LT ISZERO PUSH2 0x2097 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4875 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x20B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x20DA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x20F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2120 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x212C DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2232 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2147 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x215F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2177 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP3 GT PUSH2 0x21BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x21DF DUP5 PUSH2 0x21D9 DUP6 DUP3 PUSH2 0x31A0 JUMP JUMPDEST DUP5 PUSH2 0x7EC JUMP JUMPDEST SWAP1 POP PUSH2 0x21EB DUP9 DUP3 PUSH2 0x1B87 JUMP JUMPDEST SWAP8 POP PUSH2 0x21F7 DUP3 DUP3 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP10 MLOAD DUP2 SWAP1 DUP12 SWAP1 DUP9 SWAP1 DUP2 LT PUSH2 0x2216 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x2131 SWAP2 POP POP JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x226D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x48D2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xF242432A SWAP3 PUSH2 0x1F56 SWAP3 ADDRESS SWAP3 DUP12 SWAP3 DUP10 SWAP2 ADD PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x233A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP2 LT ISZERO PUSH2 0x239C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4D45 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x23B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x23E3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x23FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2429 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x246F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x247B DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x27DB JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2496 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x24C6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT PUSH2 0x2505 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x253F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4E5C JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x259E JUMPI PUSH1 0x6 SLOAD DUP3 EQ ISZERO PUSH2 0x259E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4DA2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2714 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x25D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x2605 PUSH2 0x25F6 DUP6 DUP9 PUSH2 0x1AF7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2600 DUP6 DUP10 PUSH2 0x31A0 JUMP JUMPDEST PUSH2 0x3217 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 DUP16 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2616 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x2656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4A93 JUMP JUMPDEST PUSH2 0x2660 DUP5 DUP4 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2679 DUP13 DUP4 PUSH2 0x1B87 JUMP JUMPDEST SWAP12 POP DUP4 PUSH2 0x269C DUP7 PUSH2 0x1530 DUP5 PUSH2 0x268F JUMPI PUSH1 0x0 PUSH2 0x2692 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP7 SWAP1 PUSH1 0xFF AND PUSH2 0x31A0 JUMP JUMPDEST DUP2 PUSH2 0x26A3 JUMPI INVALID JUMPDEST DIV DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26B0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26C9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x26FB DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26E4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH2 0x1B87 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH2 0x27D0 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2722 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH4 0x3B9ACA00 DUP2 LT ISZERO PUSH2 0x276A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4A36 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH2 0x2785 DUP10 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE DUP9 MLOAD SWAP1 SWAP10 POP DUP2 SWAP1 DUP10 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x27A9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x27C2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0x2480 JUMP JUMPDEST POP PUSH2 0x27F7 DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x357D JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xF242432A SWAP2 DUP14 SWAP2 ADDRESS SWAP2 SWAP1 DUP10 SWAP1 PUSH2 0x2854 SWAP1 PUSH32 0xC8C323F900000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x20 ADD PUSH2 0x454B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2883 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4373 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x289D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x403F9DC4582DAE52D3EEB4A22D37540FFB13C32D964C92EC5AC0D3D5628DA316 DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD PUSH2 0x28FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x29AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP2 GT PUSH2 0x2A10 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4B73 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2A2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2A57 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2A73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2A9D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2AB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2AE3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x2AEF DUP11 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2CEE JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2B0A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2B22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2B3A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x2B96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP3 PUSH2 0x2BB1 DUP7 DUP5 PUSH2 0x1AF7 JUMP JUMPDEST DUP2 PUSH2 0x2BB8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x2BC8 DUP8 DUP8 PUSH2 0x1AF7 JUMP JUMPDEST DUP2 PUSH2 0x2BCF JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP16 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x2BDE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 LT ISZERO PUSH2 0x2C1F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4C8A JUMP JUMPDEST DUP15 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x2C2B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 LT ISZERO PUSH2 0x2C6C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x2C76 DUP5 DUP8 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2C8F DUP4 DUP4 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2CA8 DUP13 DUP4 PUSH2 0x1B87 JUMP JUMPDEST SWAP12 POP DUP1 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2CB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2CD0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 POP PUSH2 0x2AF4 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH2 0x2CFA ADDRESS DUP12 DUP12 PUSH2 0x37B2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF242432A ADDRESS DUP14 PUSH1 0x6 SLOAD DUP9 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D5D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0x2EB2C2D6 SWAP2 POP PUSH2 0x2DEB SWAP1 ADDRESS SWAP1 DUP16 SWAP1 DUP16 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x430E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x711E9BCB94B4CF7BC99C1CB938EDC75AC7E85A136838E90ABF6EE1F5ADEBD423 DUP12 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2E67 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2EE2 SWAP1 DUP3 PUSH2 0x31A0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP9 DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP3 DUP8 AND DUP3 MSTORE DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x2F33 SWAP1 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2FCE DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x325E JUMP JUMPDEST ISZERO PUSH2 0x1AEF JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3087 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x306F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x30B4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x30EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1AED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5303 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x3211 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x3223 JUMPI INVALID JUMPDEST MOD ISZERO PUSH2 0x3245 JUMPI PUSH2 0x323E PUSH1 0x1 DUP5 DUP7 DUP2 PUSH2 0x3237 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3252 JUMP JUMPDEST DUP3 DUP5 DUP2 PUSH2 0x324E JUMPI INVALID JUMPDEST DIV PUSH1 0x0 JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1B80 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 DUP2 EQ ISZERO PUSH2 0x3389 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x3 SLOAD DUP7 MLOAD SWAP3 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH3 0xFDD58E SWAP2 POP ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x32F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3318 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3344 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3368 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3375 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP2 POP PUSH2 0x419 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x33A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x33CC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP ADDRESS DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x33DD JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x34A9 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3419 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3430 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT PUSH2 0x346F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4930 JUMP JUMPDEST ADDRESS DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x347C JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3405 JUMP JUMPDEST POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x4E1273F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x4E1273F4 SWAP1 PUSH2 0x3502 SWAP1 DUP5 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4487 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x351A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x352E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x3574 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3F3C JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x419 JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x35D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5294 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x36A1 JUMPI PUSH2 0x3648 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x35F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x16FA JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP8 MLOAD SWAP1 SWAP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x367E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x35DC JUMP JUMPDEST POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x374F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3737 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x378E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3776 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x677 PUSH1 0x0 DUP7 DUP7 DUP7 GAS DUP8 PUSH2 0x1880 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x380D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5209 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x38D5 JUMPI PUSH2 0x387C DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3827 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1621 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x38B2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x3810 JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3983 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x396B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x39C2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39AA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x419 DUP2 PUSH2 0x50FB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3AA9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AC0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3AEA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3AFD PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST PUSH2 0x50B9 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3B1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3B3D JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3B21 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B58 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3B66 PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3B87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3B3D JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3B8A JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3BB6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3BCA JUMPI INVALID JUMPDEST PUSH2 0x3BFB PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x50B9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3C12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3C3D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3C48 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3C58 DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3C7A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3C85 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3CB1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3CBD DUP10 DUP4 DUP11 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CD2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3CDE DUP10 DUP4 DUP11 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CF3 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3D00 DUP9 DUP3 DUP10 ADD PUSH2 0x3BA6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3D24 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3D2F DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3D3F DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D68 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3D00 DUP9 DUP3 DUP10 ADD PUSH2 0x3BA6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D86 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3D91 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3C58 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DB7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DC2 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DE2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DF9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E0C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3E1A PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x3E3A JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x3E65 JUMPI DUP1 CALLDATALOAD PUSH2 0x3E51 DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x3E3E JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x3E7C JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3E89 DUP6 DUP3 DUP7 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EA5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3EBB JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3EC7 DUP6 DUP3 DUP7 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3EE8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3EFF JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x3F0B DUP9 DUP4 DUP10 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3F23 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x3F30 DUP8 DUP3 DUP9 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F4D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3F63 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3F6F DUP5 DUP3 DUP6 ADD PUSH2 0x3B48 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F88 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1B80 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FA4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1B80 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FC1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x3FCC DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3FE9 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x40 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x3FFC JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x4011 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x4022 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x402E DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x405A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4065 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4082 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x80 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x4095 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x40AA JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x40B6 DUP4 PUSH2 0x3A8D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x40C9 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x40D5 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x40EC JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x40F8 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4127 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4132 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x414F JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x60 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x4162 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x4177 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x4188 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x4194 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x41A8 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x41B4 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x41E4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x41EF DUP2 PUSH2 0x5120 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD SLT ISZERO PUSH2 0x4220 JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x423E JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x424F DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 DUP2 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4281 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x429C JUMPI DUP1 DUP2 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42E2 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x42C6 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4347 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x42B3 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x4359 DUP2 DUP6 PUSH2 0x42B3 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP9 AND DUP2 DUP6 ADD MSTORE DUP7 PUSH1 0x40 DUP6 ADD MSTORE DUP6 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP6 ADD MSTORE DUP5 MLOAD SWAP2 POP DUP2 PUSH1 0xA0 DUP6 ADD MSTORE DUP3 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x43D3 JUMPI DUP6 DUP2 ADD DUP3 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xC0 ADD MSTORE DUP2 ADD PUSH2 0x43B7 JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x43E4 JUMPI DUP4 PUSH1 0xC0 DUP5 DUP8 ADD ADD MSTORE JUMPDEST POP POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0xC0 ADD SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x44D6 JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x44A4 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE PUSH2 0x44EA DUP2 DUP7 PUSH2 0x42B3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1B80 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x42B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x451A PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x42B3 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x452C DUP2 DUP7 PUSH2 0x42B3 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x44EA DUP2 DUP6 PUSH2 0x42B3 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204E554C4C5F4D41585F43555252454E43590000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A204E554C4C5F544F54414C5F4C49515549444954590000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F63757272656E6379546F546F6B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656E3A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F4944000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x43 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E5F5452414E53464552 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5245440000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x45 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F4944535F41 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4D4F554E54000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x42 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E535F4445504F534954 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4544000000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x63793A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x40 SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E SWAP1 DUP3 ADD MSTORE PUSH32 0x63793A20494E53554646494349454E545F43555252454E43595F414D4F554E54 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x44 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F676574546F6B656E5265736572 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7665733A20554E534F525445445F4F525F4455504C49434154455F544F4B454E PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5F49445300000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x44 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E535F5452414E534645 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5252454400000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x20494E56414C49445F43555252454E43595F414D4F554E540000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204D41585F43555252454E43595F414D4F554E545F4558434545444544000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x4A SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F4E494654595F544F4B454E535F54 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x52414E5346455252454400000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67653A554E535550504F525445445F4D45 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x54484F4400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3F SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135355265636569 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7665643A20494E56414C49445F4F4E52454345495645445F4D45535341474500 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x40 SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 SWAP1 DUP3 ADD MSTORE PUSH32 0x74793A20494E53554646494349454E545F43555252454E43595F414D4F554E54 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F63757272656E6379546F546F6B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656E3A204E554C4C5F544F4B454E535F424F5547485400000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x20444541444C494E455F45584345454445440000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2043555252454E43595F504F4F4C5F464F5242494444454E0000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A20494E53554646494349454E545F544F4B454E53000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204E554C4C5F544F4B454E535F414D4F554E5400000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x63793A204E554C4C5F544F4B454E535F534F4C44000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67652367657442757950726963653A2045 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4D5054595F524553455256450000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67652367657453656C6C50726963653A20 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x454D5054595F5245534552564500000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F4D4554484F440000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x46 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F5452414E53 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4645525245440000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x50D5 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x50F1 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x511D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x511D JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x68427572 PUSH15 0x3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x684D696E PUSH21 0x3A20494E56414C49445F4152524159535F4C454E47 SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD 0xE1 PUSH16 0xC0245D81D028816AD311C89DBBC3D6E9 PUSH5 0x4941930261 CALLDATALOAD 0xBF SWAP11 0xD2 0x4F SHR LOG2 PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "1185:33420:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28527:46;;;;;;;;;;:::i;:::-;;;;;;;;7127:132:21;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34336:266:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;31012:100::-;;;:::i;:::-;;;;;;;:::i;28910:362::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;31524:422::-;;;;;;:::i;:::-;;:::i;2312:522:21:-;;;;;;:::i;:::-;;:::i;:::-;;31224:126:0;;;:::i;:::-;;;;;;;;:::i;7539:495:21:-;;;;;;:::i;:::-;;:::i;11475:695:0:-;;;;;;:::i;:::-;;:::i;30413:522::-;;;;;;:::i;:::-;;:::i;6135:230:21:-;;;;;;:::i;:::-;;:::i;32022:95:0:-;;;:::i;23375:4455::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;29575:526::-;;;;;;:::i;:::-;;:::i;6627:160:21:-;;;;;;:::i;:::-;;:::i;27892:523:0:-;;;;;;:::i;:::-;;:::i;1373:556:21:-;;;;;;:::i;:::-;;:::i;7201:622:0:-;;;;;;:::i;:::-;;:::i;7127:132:21:-;7233:16;;;7209:7;7233:16;;;:8;:16;;;;;;;;:21;;;;;;;;;7127:132;;;;;:::o;34336:266:0:-;34413:4;34433:40;;;34448:25;34433:40;;:91;;-1:-1:-1;34483:41:0;;;34498:26;34483:41;34433:91;:156;;;-1:-1:-1;34535:54:0;;;34550:39;34535:54;34433:156;34425:164;;34336:266;;;;:::o;31012:100::-;31101:5;;;;31012:100;:::o;28910:362::-;29005:16;29046:4;29005:16;29046:4;29105:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29105:19:0;;29063:61;;29135:9;29130:103;29154:4;29150:1;:8;29130:103;;;29201:16;:25;29218:4;;29223:1;29218:7;;;;;;;;;;;;;29201:25;;;;;;;;;;;;29173:22;29196:1;29173:25;;;;;;;;;;;;;;;;;:53;29160:3;;29130:103;;;-1:-1:-1;29245:22:0;28910:362;-1:-1:-1;;;;28910:362:0:o;31524:422::-;31609:16;31671:4;31609:16;31671:4;31744:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31744:19:0;;31706:57;;31819:9;31814:96;31838:4;31834:1;:8;31814:96;;;31881:13;:22;31895:4;;31900:1;31895:7;;;;;;;;;;;;;31881:22;;;;;;;;;;;;31857:18;31876:1;31857:21;;;;;;;;;;;;;;;;;:46;31844:3;;31814:96;;2312:522:21;2498:10;:19;;;;;2497:60;;;2522:35;2539:5;2546:10;2522:16;:35::i;:::-;2489:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2623:17;;;2615:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2700:50;2723:5;2730:3;2735:4;2741:8;2700:22;:50::i;:::-;2756:73;2784:5;2791:3;2796:4;2802:8;2812:9;2823:5;2756:27;:73::i;:::-;2312:522;;;;;:::o;31224:126:0:-;31323:8;;31334:10;;31323:8;;;;31224:126;:::o;7539:495:21:-;7646:16;7698:4;:11;7680:7;:14;:29;7672:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7782:30;7829:7;:14;7815:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7815:29:21;;7782:62;;7900:9;7895:108;7919:7;:14;7915:1;:18;7895:108;;;7967:8;:20;7976:7;7984:1;7976:10;;;;;;;;;;;;;;7967:20;;;;;;;;;;;;;;;:29;7988:4;7993:1;7988:7;;;;;;;;;;;;;;7967:29;;;;;;;;;;;;7948:13;7962:1;7948:16;;;;;;;;;;;;;;;;;:48;7935:3;;7895:108;;;-1:-1:-1;8016:13:21;7539:495;-1:-1:-1;;;7539:495:21:o;11475:695:0:-;11626:13;11710:1;11690:17;:21;:48;;;;;11737:1;11715:19;:23;11690:48;11682:106;;;;;;;;;;;;:::i;:::-;11841:32;11876:36;:16;1992:3;11876:20;:36::i;:::-;11841:71;-1:-1:-1;11918:17:0;11938:49;11841:71;11967:19;11938:28;:49::i;:::-;11918:69;-1:-1:-1;11993:19:0;12015:57;12047:24;12015:27;:17;12037:4;12015:21;:27::i;:::-;:31;;:57::i;:::-;11993:79;;12097:11;12085:9;:23;;;;;;;11475:695;-1:-1:-1;;;;;;;11475:695:0:o;30413:522::-;30549:16;30590:4;30549:16;30590:4;30633:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30633:19:0;;30607:45;;30664:9;30659:232;30683:4;30679:1;:8;30659:232;;;30756:5;;30733:20;;30756:5;;:15;30780:4;30787;;30792:1;30787:7;;;;;;;;;;;;;30756:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30733:62;;30815:69;30828:11;;30840:1;30828:14;;;;;;;;;;;;;30844:12;30858:16;:25;30875:4;;30880:1;30875:7;;;;;;;;;;;;;30858:25;;;;;;;;;;;;30815:12;:69::i;:::-;30803:6;30810:1;30803:9;;;;;;;;;;;;;;;;;:81;-1:-1:-1;30689:3:0;;30659:232;;;-1:-1:-1;30924:6:0;30413:522;-1:-1:-1;;;;;;30413:522:0:o;6135:230:21:-;6267:10;6257:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;6312:48;;;;;;;6257:32;;6267:10;6312:48;;;;;;;;;;;6135:230;;:::o;32022:95:0:-;32105:7;;;;32022:95;:::o;23375:4455::-;23564:6;23896:24;23934:5;23923:27;;;;;;;;;;;;:::i;:::-;23896:54;-1:-1:-1;24088:34:0;;;24109:13;24088:34;24084:3700;;;24216:8;;;;24194:10;:31;24186:114;;;;;;;;;;;;:::i;:::-;24316:4;:11;24331:1;24316:16;24308:98;;;;;;;;;;;;:::i;:::-;24433:10;;24422:4;24427:1;24422:7;;;;;;;;;;;;;;:21;24414:95;;;;;;;;;;;;:::i;:::-;24585:23;;:::i;:::-;24637:5;24626:41;;;;;;;;;;;;:::i;:::-;24695:13;;24616:51;;-1:-1:-1;24675:17:0;;-1:-1:-1;24695:29:0;;;:53;;24735:13;;24695:53;;;24727:5;24695:53;24675:73;;24818:29;24850:100;24867:3;:19;;;24888:3;:23;;;24913:8;24922:1;24913:11;;;;;;;;;;;;;;24926:3;:12;;;24940:9;24850:16;:100::i;:::-;24818:132;;24985:9;24963:92;;24978:5;24963:92;;;24996:3;:19;;;25017:3;:23;;;25042:12;24963:92;;;;;;;;:::i;:::-;;;;;;;;24084:3700;;;;;;25200:35;;;25221:14;25200:35;25196:2588;;;25327:5;;;;25305:10;:28;25297:109;;;;;;;;;;;;:::i;:::-;25483:24;;:::i;:::-;25536:5;25525:42;;;;;;;;;;;;:::i;:::-;25595:13;;25515:52;;-1:-1:-1;25575:17:0;;-1:-1:-1;25595:29:0;;;:53;;25635:13;;25595:53;;;25627:5;25595:53;25575:73;;25721:31;25755:74;25772:4;25778:8;25788:3;:15;;;25805:3;:12;;;25819:9;25755:16;:74::i;:::-;25721:108;;25866:9;25842:66;;25859:5;25842:66;;;25877:4;25883:8;25893:14;25842:66;;;;;;;;:::i;25196:2588::-;26053:37;;;26074:16;26053:37;26049:1735;;;26199:5;;;;26177:10;:28;26169:108;;;;;;;;;;;;:::i;:::-;26353:26;;:::i;:::-;26408:5;26397:44;;;;;;;;;;;;:::i;:::-;26387:54;;;;;;26449:67;26463:5;26470:4;26476:8;26486:3;:15;;;26503:3;:12;;;26449:13;:67::i;:::-;26049:1735;;;;26661:40;;;26682:19;26661:40;26657:1127;;;26773:10;26795:4;26773:27;26765:114;;;;;;;;;;;;:::i;:::-;26961:29;;:::i;:::-;27019:5;27008:47;;;;;;;;;;;;:::i;:::-;26998:57;;;;;;27063:85;27080:5;27087:4;27093:8;27103:3;:15;;;27120:3;:13;;;27135:3;:12;;;27063:16;:85::i;26657:1127::-;27293:32;;;27314:11;27293:32;27289:495;;;27506:8;;;;27484:10;:31;27476:110;;;;;;;;;;;;:::i;:::-;27613:10;;27602:4;27607:1;27602:7;;;;;;;;;;;;;;:21;27594:95;;;;;;;;;;;;:::i;:::-;27289:495;;;27711:66;;;;;;;;;;:::i;27289:495::-;-1:-1:-1;27797:28:0;;23375:4455;-1:-1:-1;;;;;;23375:4455:0:o;29575:526::-;29713:16;29754:4;29713:16;29754:4;29797:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29797:19:0;;29771:45;;29828:9;29823:233;29847:4;29843:1;:8;29823:233;;;29920:5;;29897:20;;29920:5;;:15;29944:4;29951;;29956:1;29951:7;;;;;;;;;;;;;29920:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29897:62;;29979:70;29991:13;;30005:1;29991:16;;;;;;;;;;;;;30009;:25;30026:4;;30031:1;30026:7;;;;;;;;;;;;;30009:25;;;;;;;;;;;;30036:12;29979:11;:70::i;:::-;29967:6;29974:1;29967:9;;;;;;;;;;;;;;;;;:82;-1:-1:-1;29853:3:0;;29823:233;;6627:160:21;6754:17;;;;6722:15;6754:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;6627:160::o;27892:523:0:-;28070:16;;;28084:1;28070:16;;;;;;;;;28031:6;;28047:20;;28070:16;;;;;;;;;;-1:-1:-1;;28119:16:0;;;28133:1;28119:16;;;;;;;;;28047:39;;-1:-1:-1;28092:24:0;;28119:16;-1:-1:-1;28119:16:0;;;;;;;;;;;-1:-1:-1;28119:16:0;28092:43;;28151:3;28142;28146:1;28142:6;;;;;;;;;;;;;:12;;;;;28173:7;28160;28168:1;28160:10;;;;;;;;;;;;;:20;;;;;28234:61;28257:9;28268:5;28275:3;28280:7;28289:5;28234:22;:61::i;:::-;28202:93;;:28;:93;28187:187;;;;;;;;;;;;:::i;:::-;-1:-1:-1;28388:22:0;;27892:523;-1:-1:-1;;;;;;;27892:523:0:o;1373:556:21:-;1514:10;:19;;;;;1513:60;;;1538:35;1555:5;1562:10;1538:16;:35::i;:::-;1505:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:17;;;1626:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:43;1827:5;1834:3;1839;1844:7;1809:17;:43::i;:::-;1858:66;1881:5;1888:3;1893;1898:7;1907:9;1918:5;1858:22;:66::i;7201:622:0:-;7353:13;7438:1;7418:17;:21;:48;;;;;7465:1;7443:19;:23;7418:48;7410:105;;;;;;;;;;;;:::i;:::-;7554:17;7574:51;7620:4;7574:41;:17;7596:18;7574:21;:41::i;:::-;:45;;:51::i;:::-;7554:71;-1:-1:-1;7631:19:0;7653:65;1992:3;7654:43;:19;7678:18;7654:23;:43::i;7653:65::-;7631:87;;7736:32;7745:9;7756:11;7736:8;:32::i;4452:670:21:-;4606:8;:15;4591:4;:11;:30;4583:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4743:11;;4723:17;4792:243;4816:9;4812:1;:13;4792:243;;;4915:41;4944:8;4953:1;4944:11;;;;;;;;;;;;;;4915:8;:15;4924:5;4915:15;;;;;;;;;;;;;;;:24;4931:4;4936:1;4931:7;;;;;;;;;;;;;;4915:24;;;;;;;;;;;;:28;;:41;;;;:::i;:::-;4888:15;;;;;;;:8;:15;;;;;4904:7;;4888:15;;;4904:4;;4909:1;;4904:7;;;;;;;;;;;;4888:24;;;;;;;;;;;:68;;;;4989:39;5016:8;5025:1;5016:11;;;;;;;;;;;;;;4989:8;:13;4998:3;4989:13;;;;;;;;;;;;;;;:22;5003:4;5008:1;5003:7;;;;;;;;;;;;;;4989:22;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;4964:13;;;;;;;:8;:13;;;;;4978:7;;4964:13;;;4978:4;;4983:1;;4978:7;;;;;;;;;;;;;;;;;4964:22;;;;;;;;;;-1:-1:-1;4964:22:21;:64;4827:3;;4792:243;;;;5097:3;5064:53;;5090:5;5064:53;;5078:10;5064:53;;;5102:4;5108:8;5064:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:670;;;;;:::o;5235:503::-;5456:16;:3;:14;;;:16::i;:::-;5452:282;;;5482:13;5520:3;5498:49;;;5553:9;5564:10;5576:5;5583:4;5589:8;5599:5;5498:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5498:107:21;;-1:-1:-1;5621:38:21;;;5631:28;5621:38;5613:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5452:282;;5235:503;;;;;;:::o;224:407:31:-;282:7;506:6;502:35;;-1:-1:-1;529:1:31;522:8;;502:35;555:5;;;559:1;555;:5;:1;574:5;;;;;:10;566:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;625:1;224:407;-1:-1:-1;;;224:407:31:o;1419:158::-;1477:7;1504:5;;;1523:6;;;;1515:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4302:2507:0;1686:11:8;;4514:29:0;;1686:11:8;;1678:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1814:5;1800:19;;;;;;4598:15:0::1;4585:28:::0;::::1;;4577:94;;;;;;;;;;;;:::i;:::-;4734:16:::0;;4786:12;4734:16;4848:22:::1;::::0;::::1;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;4848:22:0::1;;4833:37;;4917:30;4964:7;4950:22;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;4950:22:0::1;;4917:55;;5071:28;5089:9;5071:17;:28::i;:::-;5055:44;;5265:9;5260:1207;5284:7;5280:1;:11;5260:1207;;;5364:16;5383:9;5393:1;5383:12;;;;;;;;;;;;;;5364:31;;5403:20;5426;5447:1;5426:23;;;;;;;;;;;;;;5403:46;;5457:20;5480:13;5494:1;5480:16;;;;;;;;;;;;;;5457:39;;5528:1;5513:12;:16;5505:83;;;;;;;;;;;;:::i;:::-;5649:23;5675:26:::0;;;:16:::1;:26;::::0;;;;;;5924:56:::1;5936:12:::0;5675:26;5967:12;5924:11:::1;:56::i;:::-;5899:81:::0;-1:-1:-1;6170:39:0::1;:19:::0;5899:81;6170:23:::1;:39::i;:::-;6148:61;;6323:14;6305:12;6318:1;6305:15;;;;;;;;;::::0;;::::1;::::0;;;;;:32;6425:35:::1;:15:::0;6445:14;6425:19:::1;:35::i;:::-;6396:26;::::0;;;:16:::1;:26;::::0;;;;;:64;;;;-1:-1:-1;;5293:3:0::1;::::0;;::::1;::::0;-1:-1:-1;5260:1207:0::1;::::0;-1:-1:-1;5260:1207:0::1;;-1:-1:-1::0;6513:23:0;;6509:133:::1;;6546:8;::::0;;6599:10:::1;::::0;6546:89:::1;::::0;;;;:8:::1;::::0;;::::1;::::0;:25:::1;::::0;:89:::1;::::0;6580:4:::1;::::0;6587:10;;6611:19;;6546:89:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6509:133;6688:5;::::0;:91:::1;::::0;;;;:5:::1;::::0;;::::1;::::0;:27:::1;::::0;:91:::1;::::0;6724:4:::1;::::0;6731:10;;6743:9;;6754:20;;6688:91:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6785:19;;;1958:11:8::0;:18;;;;1972:4;1958:18;;;4302:2507:0;;-1:-1:-1;;;;;4302:2507:0:o;8668:2434::-;1686:11:8;;8878:31:0;;1686:11:8;;1678:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1814:5;1800:19;;;;;;8975:16:0;;9043:15:::1;9030:28:::0;::::1;;9022:94;;;;;;;;;;;;:::i;:::-;9151:21;9260:7;9246:22;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;9246:22:0::1;;9229:39;;9274:30;9321:7;9307:22;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;9307:22:0::1;;9274:55;;9378:28;9396:9;9378:17;:28::i;:::-;9362:44;;9614:9;9609:1195;9633:7;9629:1;:11;9609:1195;;;9713:14;9730:9;9740:1;9730:12;;;;;;;;;;;;;;9713:29;;9750:18;9771;9790:1;9771:21;;;;;;;;;;;;;;9750:42;;9800:20;9823:13;9837:1;9823:16;;;;;;;;;;;;;;9800:39;;9915:1;9902:10;:14;9894:79;;;;;;;;;;;;:::i;:::-;10034:23;10060:24:::0;;;:16:::1;:24;::::0;;;;;;10379:71:::1;10392:10:::0;10404:28:::1;:12:::0;10392:10;10404:16:::1;:28::i;:::-;10434:15;10379:12;:71::i;:::-;10354:96:::0;-1:-1:-1;10513:33:0::1;:13:::0;10354:96;10513:17:::1;:33::i;:::-;10497:49:::0;-1:-1:-1;10632:35:0::1;:15:::0;10652:14;10632:19:::1;:35::i;:::-;10605:24;::::0;;;:16:::1;:24;::::0;;;;:62;10763:17;;10783:14;;10763;;10778:1;;10763:17;::::1;;;;;;::::0;;::::1;::::0;;;;;:34;-1:-1:-1;;9642:3:0::1;::::0;;::::1;::::0;-1:-1:-1;9609:1195:0::1;::::0;-1:-1:-1;;9609:1195:0::1;;;10868:12;10851:13;:29;;10843:106;;;;;;;;;;;;:::i;:::-;10986:8;::::0;;11039:10:::1;::::0;10986:83:::1;::::0;;;;:8:::1;::::0;;::::1;::::0;:25:::1;::::0;:83:::1;::::0;11020:4:::1;::::0;11027:10;;11051:13;;10986:83:::1;;:::i;13235:4633::-:0;1686:11:8;;;;1678:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1814:5;1800:19;;;;;;13485:15:0::1;13472:28:::0;::::1;;13464:91;;;;;;;;;;;;:::i;:::-;13608:16:::0;;13590:15:::1;13777:34;13608:16:::0;13814:22:::1;::::0;::::1;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;13814:22:0::1;;13777:59;;13842:32;13891:7;13877:22;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;13877:22:0::1;;13842:57;;13905:30;13952:7;13938:22;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;13938:22:0::1;;13905:55;;14009:28;14027:9;14009:17;:28::i;:::-;13993:44;;14215:9;14210:3304;14234:7;14230:1;:11;14210:3304;;;14315:15;14333:9;14343:1;14333:12;;;;;;;;;;;;;;14315:30;;14353:14;14370:13;14384:1;14370:16;;;;;;;;;;;;;;14353:33;;14467:1;14449:12;14462:1;14449:15;;;;;;;;;;;;;;:19;14441:82;;;;;;;;;;;;:::i;:::-;14548:1;14539:6;:10;14531:74;;;;;;;;;;;;:::i;:::-;14735:18;::::0;;;::::1;;;14731:133;;;14784:10;;14773:7;:21;;14765:90;;;;;;;;;;;;:::i;:::-;14934:22;14959::::0;;;:13:::1;:22;::::0;;;;;15046:18;;15042:2466:::1;;15147:23;15173:25:::0;;;:16:::1;:25;::::0;;;;;15260:16;;15173:25;;15147:23;15260:13;;15274:1;;15260:16;::::1;;;;;;;;;;;15237:39;;15729:22;15753:12:::0;15769:63:::1;15778:27;15789:15;15778:6;:10;;:27;;;;:::i;:::-;15807:24;:12:::0;15824:6;15807:16:::1;:24::i;:::-;15769:8;:63::i;:::-;15728:104;;;;15869:14;15850:12;15863:1;15850:15;;;;;;;;;;;;;;:33;;15842:107;;;;;;;;;;;;:::i;:::-;16057:35;:15:::0;16077:14;16057:19:::1;:35::i;:::-;16029:25;::::0;;;:16:::1;:25;::::0;;;;:63;16151:33:::1;:13:::0;16169:14;16151:17:::1;:33::i;:::-;16135:49;;16512:15;16452:57;16494:14;16453:35;16472:7;:15;;16486:1;16472:15;;;16482:1;16472:15;16453:14:::0;;:35:::1;;:18;:35::i;16452:57::-;:75;;;;;;16429:17;16447:1;16429:20;;;;;;;;;;;;;:98;;;::::0;::::1;16558:14;16537:15;16553:1;16537:18;;;;;;;;;;;;;:35;;;::::0;::::1;16693:40;16712:17;16730:1;16712:20;;;;;;;;;;;;;;16693:14;:18;;:40;;;;:::i;:::-;16668:22;::::0;;;:13:::1;:22;::::0;;;;:65;-1:-1:-1;15042:2466:0::1;::::0;-1:-1:-1;;;15042:2466:0::1;;16759:19;16781:12;16794:1;16781:15;;;;;;;;;;;;;;16759:37;;16915:10;16900:11;:25;;16892:94;;;;;;;;;;;;:::i;:::-;17067:25;::::0;;;:16:::1;:25;::::0;;;;:39;;;17165:30:::1;:13:::0;17095:11;17165:17:::1;:30::i;:::-;17346:22;::::0;;;:13:::1;:22;::::0;;;;:36;;;17423:20;;17149:46;;-1:-1:-1;17371:11:0;;17423:17;;17441:1;;17423:20;::::1;;;;;;;;;;:34;;;::::0;::::1;17488:11;17467:15;17483:1;17467:18;;;;;;;;;;;;;:32;;;::::0;::::1;15042:2466;;-1:-1:-1::0;;;14243:4:0::1;;14210:3304;;;;17554:55;17565:9;17576;17587:17;17554:55;;;;;;;;;;;::::0;:10:::1;:55::i;:::-;17662:8;::::0;17714:10:::1;::::0;17741:23:::1;::::0;17662:8:::1;::::0;;::::1;::::0;:25:::1;::::0;17688:9;;17707:4:::1;::::0;17714:10;17726:13;;17741:23:::1;::::0;17752:11;;17741:23:::1;;;:::i;:::-;;;;;;;;;;;;;17662:103;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17810:9;17795:68;;;17821:9;17832:13;17847:15;17795:68;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;1958:11:8;:18;;;;1972:4;1958:18;;;-1:-1:-1;;;;;;;;13235:4633:0:o;18615:3076::-;1686:11:8;;;;1678:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1814:5;1800:19;;;;;;18908:15:0::1;18896:27:::0;::::1;18888:93;;;;;;;;;;;;:::i;:::-;19034:16:::0;;19016:15:::1;19217:29;19034:16:::0;19249:22:::1;::::0;::::1;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;19249:22:0::1;;19217:54;;19324:32;19373:7;19359:22;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;19359:22:0::1;;19324:57;;19433:30;19480:7;19466:22;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;-1:-1:-1;19466:22:0::1;;19433:55;;19537:28;19555:9;19537:17;:28::i;:::-;19521:44;;19753:9;19748:1494;19772:7;19768:1;:11;19748:1494;;;19852:10;19865:9;19875:1;19865:12;;;;;;;;;;;;;;19852:25;;19885:18;19906:17;19924:1;19906:20;;;;;;;;;;;;;;19885:41;;19934:20;19957:13;19971:1;19957:16;;;;;;;;;;;;;;19934:39;;20044:22;20069:13;:17;20083:2;20069:17;;;;;;;;;;;;20044:42;;20119:1;20102:14;:18;20094:87;;;;;;;;;;;;:::i;:::-;20252:23;20278:20:::0;;;:16:::1;:20;::::0;;;;;;20432:14;20398:31:::1;:10:::0;20278:20;20398:14:::1;:31::i;:::-;:48;;;;;;::::0;-1:-1:-1;20454:19:0::1;20507:14:::0;20476:28:::1;:10:::0;20491:12;20476:14:::1;:28::i;:::-;:45;;;;;;20454:67;;20622:12;20635:1;20622:15;;;;;;;;;;;;;;20604:14;:33;;20596:110;;;;;;;;;;;;:::i;:::-;20737:10;20748:1;20737:13;;;;;;;;;;;;;;20722:11;:28;;20714:96;;;;;;;;;;;;:::i;:::-;20902:30;:14:::0;20921:10;20902:18:::1;:30::i;:::-;20882:17;::::0;;;:13:::1;:17;::::0;;;;:50;21015:35:::1;:15:::0;21035:14;21015:19:::1;:35::i;:::-;20992:20;::::0;;;:16:::1;:20;::::0;;;;:58;21122:33:::1;:13:::0;21140:14;21122:17:::1;:33::i;:::-;21106:49;;21181:11;21163:12;21176:1;21163:15;;;;;;;;;;;;;:29;;;::::0;::::1;21221:14;21200:15;21216:1;21200:18;;;;;;;;;::::0;;::::1;::::0;;;;;:35;-1:-1:-1;;19781:3:0::1;::::0;;::::1;::::0;-1:-1:-1;19748:1494:0::1;::::0;-1:-1:-1;;;;19748:1494:0::1;;;21304:55;21323:4;21330:9;21341:17;21304:10;:55::i;:::-;21417:8;;;;;;;;;;;:25;;;21451:4;21458:9;21469:10;;21481:13;21417:82;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;21505:5:0::1;::::0;:82:::1;::::0;;;;:5:::1;::::0;;::::1;::::0;-1:-1:-1;21505:27:0::1;::::0;-1:-1:-1;21505:82:0::1;::::0;21541:4:::1;::::0;21548:9;;21559;;21570:12;;21505:82:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21634:9;21617:69;;;21645:9;21656:12;21670:15;21617:69;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1::0;;1958:11:8;:18;;;;1972:4;1958:18;;;-1:-1:-1;;;;;;;;;18615:3076:0:o;3224:367:21:-;3376:15;;;;;;;:8;:15;;;;;;;;:20;;;;;;;;;:33;;3401:7;3376:24;:33::i;:::-;3353:15;;;;;;;;:8;:15;;;;;;;;:20;;;;;;;;:56;;;;3455:13;;;;;;;;;;:18;;;;;;;;:31;;3478:7;3455:22;:31::i;:::-;3434:13;;;;;;;;:8;:13;;;;;;;;:18;;;;;;;;;:52;;;;3534;;;;;;;;;;;;;3434:13;;3534:52;;;;3549:10;;3534:52;;;;;;;;;;;3224:367;;;;:::o;3699:456::-;3891:16;:3;:14;;;:16::i;:::-;3887:264;;;3917:13;3955:3;3933:44;;;3983:9;3994:10;4006:5;4013:3;4018:7;4027:5;3933:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3933:100:21;;-1:-1:-1;4049:32:21;;;4059:22;4049:32;4041:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1186:158:31;1244:7;1272:1;1267;:6;;1259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1319:5:31;;;1186:158::o;32376:144:0:-;32439:7;32448:4;32471:1;32467;:5;;;;;;:10;:48;;32496:12;32506:1;32499;32497;:3;;;;;;;32496:9;:12::i;:::-;32510:4;32467:48;;;32483:1;32481;:3;;;;;;32486:5;32467:48;32460:55;;;;32376:144;;;;;;:::o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;882:52;-1:-1:-1;;541:398:27:o;32992:888:0:-;33123:16;;33079;;33229:1;33218:12;;33214:662;;;33273:16;;;33287:1;33273:16;;;;;;;;;33240:30;;33273:16;;;;;;;;;-1:-1:-1;;33316:5:0;;33347:12;;33240:49;;-1:-1:-1;33316:5:0;;;:15;;-1:-1:-1;33340:4:0;;33347:12;;33316:5;;33347:12;;;;;;;;;;33316:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33297:13;33311:1;33297:16;;;;;;;;;;;;;;;;;:63;33375:13;-1:-1:-1;33368:20:0;;-1:-1:-1;33368:20:0;33214:662;33484:33;33534:7;33520:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33520:22:0;;33484:58;;33580:4;33550:16;33567:1;33550:19;;;;;;;;:35;;;;:19;;;;;;;;;;;:35;33611:1;33594:212;33618:7;33614:1;:11;33594:212;;;33667:9;33677:1;33667:12;;;;;;;;;;;;;;33650:9;33662:1;33660;:3;33650:14;;;;;;;;;;;;;;:29;33642:110;;;;;;;;;;;;:::i;:::-;33792:4;33762:16;33779:1;33762:19;;;;;;;;:35;;;;:19;;;;;;;;;;;:35;33627:3;;33594:212;;;-1:-1:-1;33820:5:0;;:49;;;;;:5;;;;;:20;;:49;;33841:16;;33859:9;;33820:49;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33813:56;;;;;;1395:716:24;1542:8;:15;1527:4;:11;:30;1519:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:11;;1651:13;1715:147;1739:5;1735:1;:9;1715:147;;;1816:39;1843:8;1852:1;1843:11;;;;;;;;;;;;;;1816:8;:13;1825:3;1816:13;;;;;;;;;;;;;;;:22;1830:4;1835:1;1830:7;;;;;;;1816:39;1791:13;;;;;;;:8;:13;;;;;1805:7;;1791:13;;;1805:4;;1810:1;;1805:7;;;;;;;;;;;;;;;;;1791:22;;;;;;;;;;-1:-1:-1;1791:22:24;:64;1746:3;;1715:147;;;;1942:3;1902:60;;1936:3;1902:60;;1916:10;1902:60;;;1947:4;1953:8;1902:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:80;2062:3;2068;2073:4;2079:8;2089:9;2100:5;2026:27;:80::i;2967:552::-;3123:11;;3157:15;;3148:24;;3140:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3266:9;3261:151;3285:5;3281:1;:9;3261:151;;;3364:41;3393:8;3402:1;3393:11;;;;;;;;;;;;;;3364:8;:15;3373:5;3364:15;;;;;;;;;;;;;;;:24;3380:4;3385:1;3380:7;;;;;;;3364:41;3337:15;;;;;;;:8;:15;;;;;3353:7;;3337:15;;;3353:4;;3358:1;;3353:7;;;;;;;;;;;;;;;;;3337:24;;;;;;;;;;-1:-1:-1;3337:24:24;:68;3292:3;;3261:151;;;;3493:3;3452:62;;3478:5;3452:62;;3466:10;3452:62;;;3499:4;3505:8;3452:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2967:552;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:142:33:-;95:13;;117:33;95:13;117:33;:::i;161:400::-;;;294:3;287:4;279:6;275:17;271:27;261:2;;317:6;309;302:22;261:2;-1:-1:-1;345:20:33;;388:18;377:30;;374:2;;;427:8;417;410:26;374:2;471:4;463:6;459:17;447:29;;534:3;527:4;519;511:6;507:17;499:6;495:30;491:41;488:50;485:2;;;551:1;548;541:12;566:692;;679:3;672:4;664:6;660:17;656:27;646:2;;701:5;694;687:20;646:2;745:6;732:20;770:69;785:53;831:6;785:53;:::i;:::-;770:69;:::i;:::-;873:21;;;761:78;-1:-1:-1;913:4:33;933:14;;;;967:15;;;1013;;;1001:28;;997:37;;994:46;-1:-1:-1;991:2:33;;;1053:1;1050;1043:12;991:2;1075:1;1085:167;1099:6;1096:1;1093:13;1085:167;;;1160:17;;1148:30;;1198:12;;;;1230;;;;1121:1;1114:9;1085:167;;;1089:3;;;;;636:622;;;;:::o;1263:689::-;;1387:3;1380:4;1372:6;1368:17;1364:27;1354:2;;1409:5;1402;1395:20;1354:2;1446:6;1440:13;1471:69;1486:53;1532:6;1486:53;:::i;1471:69::-;1574:21;;;1462:78;-1:-1:-1;1614:4:33;1634:14;;;;1668:15;;;1714;;;1702:28;;1698:37;;1695:46;-1:-1:-1;1692:2:33;;;1754:1;1751;1744:12;1692:2;1776:1;1786:160;1800:6;1797:1;1794:13;1786:160;;;1861:10;;1849:23;;1892:12;;;;1924;;;;1822:1;1815:9;1786:160;;1957:580;;2054:3;2047:4;2039:6;2035:17;2031:27;2021:2;;2076:5;2069;2062:20;2021:2;2120:6;2107:20;2150:18;2142:6;2139:30;2136:2;;;2172:9;2136:2;2201:117;2312:4;2243:66;2236:4;2228:6;2224:17;2220:90;2216:101;2201:117;:::i;:::-;2192:126;;2341:6;2334:5;2327:21;2395:3;2388:4;2379:6;2371;2367:19;2363:30;2360:39;2357:2;;;2412:1;2409;2402:12;2357:2;2475:6;2468:4;2460:6;2456:17;2449:4;2442:5;2438:16;2425:57;2529:1;2502:18;;;2522:4;2498:29;2491:40;2506:5;2011:526;-1:-1:-1;;2011:526:33:o;2542:402::-;;;2671:2;2659:9;2650:7;2646:23;2642:32;2639:2;;;2692:6;2684;2677:22;2639:2;2736:9;2723:23;2755:33;2782:5;2755:33;:::i;:::-;2807:5;-1:-1:-1;2864:2:33;2849:18;;2836:32;2877:35;2836:32;2877:35;:::i;:::-;2931:7;2921:17;;;2629:315;;;;;:::o;2949:1129::-;;;;;;3188:3;3176:9;3167:7;3163:23;3159:33;3156:2;;;3210:6;3202;3195:22;3156:2;3254:9;3241:23;3273:33;3300:5;3273:33;:::i;:::-;3325:5;-1:-1:-1;3382:2:33;3367:18;;3354:32;3395:35;3354:32;3395:35;:::i;:::-;3449:7;-1:-1:-1;3507:2:33;3492:18;;3479:32;3530:18;3560:14;;;3557:2;;;3592:6;3584;3577:22;3557:2;3620:67;3679:7;3670:6;3659:9;3655:22;3620:67;:::i;:::-;3610:77;;3740:2;3729:9;3725:18;3712:32;3696:48;;3769:2;3759:8;3756:16;3753:2;;;3790:6;3782;3775:22;3753:2;3818:69;3879:7;3868:8;3857:9;3853:24;3818:69;:::i;:::-;3808:79;;3940:3;3929:9;3925:19;3912:33;3896:49;;3970:2;3960:8;3957:16;3954:2;;;3991:6;3983;3976:22;3954:2;;4019:53;4064:7;4053:8;4042:9;4038:24;4019:53;:::i;:::-;4009:63;;;3146:932;;;;;;;;:::o;4083:760::-;;;;;;4272:3;4260:9;4251:7;4247:23;4243:33;4240:2;;;4294:6;4286;4279:22;4240:2;4338:9;4325:23;4357:33;4384:5;4357:33;:::i;:::-;4409:5;-1:-1:-1;4466:2:33;4451:18;;4438:32;4479:35;4438:32;4479:35;:::i;:::-;4533:7;-1:-1:-1;4587:2:33;4572:18;;4559:32;;-1:-1:-1;4638:2:33;4623:18;;4610:32;;-1:-1:-1;4693:3:33;4678:19;;4665:33;4721:18;4710:30;;4707:2;;;4758:6;4750;4743:22;4707:2;4786:51;4829:7;4820:6;4809:9;4805:22;4786:51;:::i;4848:438::-;;;4974:2;4962:9;4953:7;4949:23;4945:32;4942:2;;;4995:6;4987;4980:22;4942:2;5039:9;5026:23;5058:33;5085:5;5058:33;:::i;:::-;5110:5;-1:-1:-1;5167:2:33;5152:18;;5139:32;5209:15;;5202:23;5190:36;;5180:2;;5245:6;5237;5230:22;5291:327;;;5420:2;5408:9;5399:7;5395:23;5391:32;5388:2;;;5441:6;5433;5426:22;5388:2;5485:9;5472:23;5504:33;5531:5;5504:33;:::i;:::-;5556:5;5608:2;5593:18;;;;5580:32;;-1:-1:-1;;;5378:240:33:o;5623:1315::-;;;5802:2;5790:9;5781:7;5777:23;5773:32;5770:2;;;5823:6;5815;5808:22;5770:2;5868:9;5855:23;5897:18;5938:2;5930:6;5927:14;5924:2;;;5959:6;5951;5944:22;5924:2;6002:6;5991:9;5987:22;5977:32;;6047:7;6040:4;6036:2;6032:13;6028:27;6018:2;;6074:6;6066;6059:22;6018:2;6119;6106:16;6142:69;6157:53;6203:6;6157:53;:::i;6142:69::-;6233:3;6257:6;6252:3;6245:19;6283:4;6312:2;6307:3;6303:12;6296:19;;6343:2;6339;6335:11;6396:7;6391:2;6385;6377:6;6373:15;6369:2;6365:24;6361:33;6358:46;6355:2;;;6422:6;6414;6407:22;6355:2;6449:6;6440:15;;6464:244;6478:6;6475:1;6472:13;6464:244;;;6553:3;6540:17;6570:33;6597:5;6570:33;:::i;:::-;6616:18;;6500:1;6493:9;;;;;6654:12;;;;6686;;6464:244;;;-1:-1:-1;6727:5:33;;-1:-1:-1;6770:18:33;;6757:32;;-1:-1:-1;;;6801:16:33;;;6798:2;;;6835:6;6827;6820:22;6798:2;;6863:69;6924:7;6913:8;6902:9;6898:24;6863:69;:::i;:::-;6853:79;;;5760:1178;;;;;:::o;6943:463::-;;;7090:2;7078:9;7069:7;7065:23;7061:32;7058:2;;;7111:6;7103;7096:22;7058:2;7156:9;7143:23;7189:18;7181:6;7178:30;7175:2;;;7226:6;7218;7211:22;7175:2;7270:76;7338:7;7329:6;7318:9;7314:22;7270:76;:::i;:::-;7365:8;;7244:102;;-1:-1:-1;7048:358:33;-1:-1:-1;;;;7048:358:33:o;7411:815::-;;;;;7610:2;7598:9;7589:7;7585:23;7581:32;7578:2;;;7631:6;7623;7616:22;7578:2;7676:9;7663:23;7705:18;7746:2;7738:6;7735:14;7732:2;;;7767:6;7759;7752:22;7732:2;7811:76;7879:7;7870:6;7859:9;7855:22;7811:76;:::i;:::-;7906:8;;-1:-1:-1;7785:102:33;-1:-1:-1;7994:2:33;7979:18;;7966:32;;-1:-1:-1;8010:16:33;;;8007:2;;;8044:6;8036;8029:22;8007:2;;8088:78;8158:7;8147:8;8136:9;8132:24;8088:78;:::i;:::-;7568:658;;;;-1:-1:-1;8185:8:33;-1:-1:-1;;;;7568:658:33:o;8231:389::-;;8379:2;8367:9;8358:7;8354:23;8350:32;8347:2;;;8400:6;8392;8385:22;8347:2;8438:9;8432:16;8471:18;8463:6;8460:30;8457:2;;;8508:6;8500;8493:22;8457:2;8536:78;8606:7;8597:6;8586:9;8582:22;8536:78;:::i;:::-;8526:88;8337:283;-1:-1:-1;;;;8337:283:33:o;8625:257::-;;8736:2;8724:9;8715:7;8711:23;8707:32;8704:2;;;8757:6;8749;8742:22;8704:2;8801:9;8788:23;8820:32;8846:5;8820:32;:::i;8887:261::-;;9009:2;8997:9;8988:7;8984:23;8980:32;8977:2;;;9030:6;9022;9015:22;8977:2;9067:9;9061:16;9086:32;9112:5;9086:32;:::i;9153:995::-;;;9325:2;9313:9;9304:7;9300:23;9296:32;9293:2;;;9346:6;9338;9331:22;9293:2;9383:9;9377:16;9402:32;9428:5;9402:32;:::i;:::-;9502:2;9487:18;;9481:25;9453:5;;-1:-1:-1;9525:18:33;9555:14;;;9552:2;;;9587:6;9579;9572:22;9552:2;9615:22;;;;9671:2;9653:16;;;9649:25;9646:2;;;9692:6;9684;9677:22;9646:2;9730;9724:9;9772:2;9764:6;9760:15;9825:6;9813:10;9810:22;9805:2;9793:10;9790:18;9787:46;9784:2;;;9836:9;9784:2;9863;9856:22;9903:9;;9924:16;;;9921:2;;;9958:6;9950;9943:22;9921:2;9991:73;10056:7;10045:8;10041:2;10037:17;9991:73;:::i;:::-;9983:6;9976:89;;10112:2;10108;10104:11;10098:18;10093:2;10085:6;10081:15;10074:43;10136:6;10126:16;;;;;9283:865;;;;;:::o;10153:1279::-;;;10322:2;10310:9;10301:7;10297:23;10293:32;10290:2;;;10343:6;10335;10328:22;10290:2;10380:9;10374:16;10399:32;10425:5;10399:32;:::i;:::-;10499:2;10484:18;;10478:25;10450:5;;-1:-1:-1;10522:18:33;10552:14;;;10549:2;;;10584:6;10576;10569:22;10549:2;10612:22;;;;10668:4;10650:16;;;10646:27;10643:2;;;10691:6;10683;10676:22;10643:2;10729;10723:9;10771:4;10763:6;10759:17;10826:6;10814:10;10811:22;10806:2;10794:10;10791:18;10788:46;10785:2;;;10837:9;10785:2;10864;10857:22;10903:35;10935:2;10903:35;:::i;:::-;10895:6;10888:51;10978:2;10974;10970:11;10964:18;11007:2;10997:8;10994:16;10991:2;;;11028:6;11020;11013:22;10991:2;11070:73;11135:7;11124:8;11120:2;11116:17;11070:73;:::i;:::-;11065:2;11057:6;11053:15;11046:98;;11183:2;11179;11175:11;11169:18;11212:2;11202:8;11199:16;11196:2;;;11233:6;11225;11218:22;11196:2;11275:73;11340:7;11329:8;11325:2;11321:17;11275:73;:::i;:::-;11270:2;11262:6;11258:15;11251:98;;11396:2;11392;11388:11;11382:18;11377:2;11369:6;11365:15;11358:43;11420:6;11410:16;;;;;10280:1152;;;;;:::o;11437:1207::-;;;11612:2;11600:9;11591:7;11587:23;11583:32;11580:2;;;11633:6;11625;11618:22;11580:2;11670:9;11664:16;11689:32;11715:5;11689:32;:::i;:::-;11789:2;11774:18;;11768:25;11740:5;;-1:-1:-1;11812:18:33;11842:14;;;11839:2;;;11874:6;11866;11859:22;11839:2;11902:22;;;;11958:4;11940:16;;;11936:27;11933:2;;;11981:6;11973;11966:22;11933:2;12019;12013:9;12061:4;12053:6;12049:17;12116:6;12104:10;12101:22;12096:2;12084:10;12081:18;12078:46;12075:2;;;12127:9;12075:2;12154;12147:22;12194:9;;12215:16;;;12212:2;;;12249:6;12241;12234:22;12212:2;12282:73;12347:7;12336:8;12332:2;12328:17;12282:73;:::i;:::-;12274:6;12267:89;;12395:2;12391;12387:11;12381:18;12424:2;12414:8;12411:16;12408:2;;;12445:6;12437;12430:22;12408:2;12487:73;12552:7;12541:8;12537:2;12533:17;12487:73;:::i;:::-;12482:2;12474:6;12470:15;12463:98;;12608:2;12604;12600:11;12594:18;12589:2;12581:6;12577:15;12570:43;12632:6;12622:16;;;;;11570:1074;;;;;:::o;12649:921::-;;;12810:9;12801:7;12797:23;12840:3;12836:2;12832:12;12829:2;;;12862:6;12854;12847:22;12829:2;12899:9;12893:16;12918:32;12944:5;12918:32;:::i;:::-;12969:5;-1:-1:-1;13067:4:33;12998:66;12990:75;;12986:86;12983:2;;;13090:6;13082;13075:22;12983:2;;13128;13122:9;13170:4;13162:6;13158:17;13241:6;13229:10;13226:22;13205:18;13193:10;13190:34;13187:62;13184:2;;;13252:9;13184:2;13279;13272:22;13339:2;13324:18;;13318:25;13352:35;13318:25;13352:35;:::i;:::-;13396:23;;13473:2;13458:18;;;13452:25;13447:2;13435:15;;13428:50;13532:4;13517:20;;;13511:27;13494:15;;;13487:52;;;;-1:-1:-1;12777:793:33;13403:6;;-1:-1:-1;12777:793:33:o;13575:194::-;;13698:2;13686:9;13677:7;13673:23;13669:32;13666:2;;;13719:6;13711;13704:22;13666:2;-1:-1:-1;13747:16:33;;13656:113;-1:-1:-1;13656:113:33:o;13774:326::-;;;;13920:2;13908:9;13899:7;13895:23;13891:32;13888:2;;;13941:6;13933;13926:22;13888:2;-1:-1:-1;;13969:23:33;;;14039:2;14024:18;;14011:32;;-1:-1:-1;14090:2:33;14075:18;;;14062:32;;13878:222;-1:-1:-1;13878:222:33:o;14105:443::-;;14202:5;14196:12;14229:6;14224:3;14217:19;14255:4;14284:2;14279:3;14275:12;14268:19;;14321:2;14314:5;14310:14;14342:3;14354:169;14368:6;14365:1;14362:13;14354:169;;;14429:13;;14417:26;;14463:12;;;;14498:15;;;;14390:1;14383:9;14354:169;;;-1:-1:-1;14539:3:33;;14172:376;-1:-1:-1;;;;;14172:376:33:o;14553:226::-;14729:42;14717:55;;;;14699:74;;14687:2;14672:18;;14654:125::o;14784:927::-;;15189:42;15270:2;15262:6;15258:15;15247:9;15240:34;15322:2;15314:6;15310:15;15305:2;15294:9;15290:18;15283:43;;15362:3;15357:2;15346:9;15342:18;15335:31;15389:63;15447:3;15436:9;15432:19;15424:6;15389:63;:::i;:::-;15500:9;15492:6;15488:22;15483:2;15472:9;15468:18;15461:50;15534;15577:6;15569;15534:50;:::i;:::-;15621:22;;;15615:3;15600:19;;;15593:51;;;;-1:-1:-1;15653:20:33;;15702:2;15690:15;;15169:542;-1:-1:-1;;;;15169:542:33:o;15716:1029::-;;15967:42;16048:2;16040:6;16036:15;16025:9;16018:34;16071:2;16121;16113:6;16109:15;16104:2;16093:9;16089:18;16082:43;16161:6;16156:2;16145:9;16141:18;16134:34;16204:6;16199:2;16188:9;16184:18;16177:34;16248:3;16242;16231:9;16227:19;16220:32;16281:6;16275:13;16261:27;;16325:6;16319:3;16308:9;16304:19;16297:35;16350:4;16363:141;16377:6;16374:1;16371:13;16363:141;;;16473:14;;;16469:23;;16463:30;16438:17;;;16457:3;16434:27;16427:67;16392:10;;16363:141;;;16522:6;16519:1;16516:13;16513:2;;;16593:4;16587:3;16578:6;16567:9;16563:22;16559:32;16552:46;16513:2;-1:-1:-1;;16660:2:33;16648:15;16665:66;16644:88;16629:104;;;;16735:3;16625:114;;15947:798;-1:-1:-1;;;;;;15947:798:33:o;16750:653::-;17055:42;17124:15;;;17106:34;;17176:15;;;;17171:2;17156:18;;17149:43;17223:2;17208:18;;17201:34;17266:2;17251:18;;17244:34;;;;17315:3;17309;17294:19;;17287:32;;;16750:653;17335:19;;;17328:33;17393:3;17378:19;;17035:368::o;17408:297::-;17612:42;17600:55;;;;17582:74;;17687:2;17672:18;;17665:34;17570:2;17555:18;;17537:168::o;17710:864::-;17978:2;17990:21;;;18060:13;;17963:18;;;18082:22;;;17710:864;;18157:4;;18135:2;18120:18;;;18184:15;;;17710:864;18230:218;18244:6;18241:1;18238:13;18230:218;;;18309:13;;18324:42;18305:62;18293:75;;18388:12;;;;18423:15;;;;18266:1;18259:9;18230:218;;;18234:3;;;18493:9;18488:3;18484:19;18479:2;18468:9;18464:18;18457:47;18521;18564:3;18556:6;18521:47;:::i;:::-;18513:55;17939:635;-1:-1:-1;;;;;;17939:635:33:o;18579:267::-;;18758:2;18747:9;18740:21;18778:62;18836:2;18825:9;18821:18;18813:6;18778:62;:::i;18851:687::-;;19186:2;19175:9;19168:21;19212:62;19270:2;19259:9;19255:18;19247:6;19212:62;:::i;:::-;19322:9;19314:6;19310:22;19305:2;19294:9;19290:18;19283:50;19356;19399:6;19391;19356:50;:::i;:::-;19342:64;;19454:9;19446:6;19442:22;19437:2;19426:9;19422:18;19415:50;19482;19525:6;19517;19482:50;:::i;19543:187::-;19708:14;;19701:22;19683:41;;19671:2;19656:18;;19638:92::o;19735:248::-;19909:66;19897:79;;;;19879:98;;19867:2;19852:18;;19834:149::o;19988:414::-;20190:2;20172:21;;;20229:2;20209:18;;;20202:30;20268:34;20263:2;20248:18;;20241:62;20339:20;20334:2;20319:18;;20312:48;20392:3;20377:19;;20162:240::o;20407:420::-;20609:2;20591:21;;;20648:2;20628:18;;;20621:30;20687:34;20682:2;20667:18;;20660:62;20758:26;20753:2;20738:18;;20731:54;20817:3;20802:19;;20581:246::o;20832:417::-;21034:2;21016:21;;;21073:2;21053:18;;;21046:30;21112:34;21107:2;21092:18;;21085:62;21183:23;21178:2;21163:18;;21156:51;21239:3;21224:19;;21006:243::o;21254:425::-;21456:2;21438:21;;;21495:2;21475:18;;;21468:30;21534:34;21529:2;21514:18;;21507:62;21605:31;21600:2;21585:18;;21578:59;21669:3;21654:19;;21428:251::o;21684:471::-;21886:2;21868:21;;;21925:2;21905:18;;;21898:30;21964:34;21959:2;21944:18;;21937:62;22035:34;22030:2;22015:18;;22008:62;22107:5;22101:3;22086:19;;22079:34;22145:3;22130:19;;21858:297::o;22160:473::-;22362:2;22344:21;;;22401:2;22381:18;;;22374:30;22440:34;22435:2;22420:18;;22413:62;22511:34;22506:2;22491:18;;22484:62;22583:7;22577:3;22562:19;;22555:36;22623:3;22608:19;;22334:299::o;22638:470::-;22840:2;22822:21;;;22879:2;22859:18;;;22852:30;22918:34;22913:2;22898:18;;22891:62;22989:34;22984:2;22969:18;;22962:62;23061:4;23055:3;23040:19;;23033:33;23098:3;23083:19;;22812:296::o;23113:417::-;23315:2;23297:21;;;23354:2;23334:18;;;23327:30;23393:34;23388:2;23373:18;;23366:62;23464:23;23459:2;23444:18;;23437:51;23520:3;23505:19;;23287:243::o;23535:428::-;23737:2;23719:21;;;23776:2;23756:18;;;23749:30;;;23815:34;23795:18;;;23788:62;23886:34;23881:2;23866:18;;23859:62;23953:3;23938:19;;23709:254::o;23968:472::-;24170:2;24152:21;;;24209:2;24189:18;;;24182:30;24248:34;24243:2;24228:18;;24221:62;24319:34;24314:2;24299:18;;24292:62;24391:6;24385:3;24370:19;;24363:35;24430:3;24415:19;;24142:298::o;24445:472::-;24647:2;24629:21;;;24686:2;24666:18;;;24659:30;24725:34;24720:2;24705:18;;24698:62;24796:34;24791:2;24776:18;;24769:62;24868:6;24862:3;24847:19;;24840:35;24907:3;24892:19;;24619:298::o;24922:420::-;25124:2;25106:21;;;25163:2;25143:18;;;25136:30;25202:34;25197:2;25182:18;;25175:62;25273:26;25268:2;25253:18;;25246:54;25332:3;25317:19;;25096:246::o;25347:425::-;25549:2;25531:21;;;25588:2;25568:18;;;25561:30;25627:34;25622:2;25607:18;;25600:62;25698:31;25693:2;25678:18;;25671:59;25762:3;25747:19;;25521:251::o;25777:478::-;25979:2;25961:21;;;26018:2;25998:18;;;25991:30;26057:34;26052:2;26037:18;;26030:62;26128:34;26123:2;26108:18;;26101:62;26200:12;26194:3;26179:19;;26172:41;26245:3;26230:19;;25951:304::o;26260:417::-;26462:2;26444:21;;;26501:2;26481:18;;;26474:30;26540:34;26535:2;26520:18;;26513:62;26611:23;26606:2;26591:18;;26584:51;26667:3;26652:19;;26434:243::o;26682:400::-;26884:2;26866:21;;;26923:2;26903:18;;;26896:30;26962:34;26957:2;26942:18;;26935:62;27033:6;27028:2;27013:18;;27006:34;27072:3;27057:19;;26856:226::o;27087:427::-;27289:2;27271:21;;;27328:2;27308:18;;;27301:30;27367:34;27362:2;27347:18;;27340:62;27438:33;27433:2;27418:18;;27411:61;27504:3;27489:19;;27261:253::o;27519:428::-;27721:2;27703:21;;;27760:2;27740:18;;;27733:30;;;27799:34;27779:18;;;27772:62;27870:34;27865:2;27850:18;;27843:62;27937:3;27922:19;;27693:254::o;27952:418::-;28154:2;28136:21;;;28193:2;28173:18;;;28166:30;28232:34;28227:2;28212:18;;28205:62;28303:24;28298:2;28283:18;;28276:52;28360:3;28345:19;;28126:244::o;28375:414::-;28577:2;28559:21;;;28616:2;28596:18;;;28589:30;28655:34;28650:2;28635:18;;28628:62;28726:20;28721:2;28706:18;;28699:48;28779:3;28764:19;;28549:240::o;28794:420::-;28996:2;28978:21;;;29035:2;29015:18;;;29008:30;29074:34;29069:2;29054:18;;29047:62;29145:26;29140:2;29125:18;;29118:54;29204:3;29189:19;;28968:246::o;29219:419::-;29421:2;29403:21;;;29460:2;29440:18;;;29433:30;29499:34;29494:2;29479:18;;29472:62;29570:25;29565:2;29550:18;;29543:53;29628:3;29613:19;;29393:245::o;29643:415::-;29845:2;29827:21;;;29884:2;29864:18;;;29857:30;29923:34;29918:2;29903:18;;29896:62;29994:21;29989:2;29974:18;;29967:49;30048:3;30033:19;;29817:241::o;30063:416::-;30265:2;30247:21;;;30304:2;30284:18;;;30277:30;30343:34;30338:2;30323:18;;30316:62;30414:22;30409:2;30394:18;;30387:50;30469:3;30454:19;;30237:242::o;30484:408::-;30686:2;30668:21;;;30725:2;30705:18;;;30698:30;30764:34;30759:2;30744:18;;30737:62;30835:14;30830:2;30815:18;;30808:42;30882:3;30867:19;;30658:234::o;30897:409::-;31099:2;31081:21;;;31138:2;31118:18;;;31111:30;31177:34;31172:2;31157:18;;31150:62;31248:15;31243:2;31228:18;;31221:43;31296:3;31281:19;;31071:235::o;31311:420::-;31513:2;31495:21;;;31552:2;31532:18;;;31525:30;31591:34;31586:2;31571:18;;31564:62;31662:26;31657:2;31642:18;;31635:54;31721:3;31706:19;;31485:246::o;31736:474::-;31938:2;31920:21;;;31977:2;31957:18;;;31950:30;32016:34;32011:2;31996:18;;31989:62;32087:34;32082:2;32067:18;;32060:62;32159:8;32153:3;32138:19;;32131:37;32200:3;32185:19;;31910:300::o;32215:177::-;32361:25;;;32349:2;32334:18;;32316:76::o;32397:242::-;32467:2;32461:9;32497:17;;;32544:18;32529:34;;32565:22;;;32526:62;32523:2;;;32591:9;32523:2;32618;32611:22;32441:198;;-1:-1:-1;32441:198:33:o;32644:183::-;;32743:18;32735:6;32732:30;32729:2;;;32765:9;32729:2;-1:-1:-1;32816:4:33;32797:17;;;32793:28;;32719:108::o;32832:156::-;32920:42;32913:5;32909:54;32902:5;32899:65;32889:2;;32978:1;32975;32968:12;32889:2;32879:109;:::o;32993:179::-;33080:66;33073:5;33069:78;33062:5;33059:89;33049:2;;33162:1;33159;33152:12"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "getBuyPrice(uint256,uint256,uint256)": "fca16c3b",
              "getCurrencyInfo()": "46adf5ca",
              "getCurrencyReserves(uint256[])": "209b96c5",
              "getFactoryAddress()": "a9c2e36c",
              "getPrice_currencyToToken(uint256[],uint256[])": "be571468",
              "getPrice_tokenToCurrency(uint256[],uint256[])": "863ed300",
              "getSellPrice(uint256,uint256,uint256)": "6ee8e134",
              "getTokenAddress()": "10fe9ae8",
              "getTotalSupply(uint256[])": "2bef5e38",
              "isApprovedForAll(address,address)": "e985e9c5",
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "contracts/exchange/NiftyswapFactory.sol": {
        "NiftyswapFactory": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "currency",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "currencyID",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "exchange",
                  "type": "address"
                }
              ],
              "name": "NewExchange",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_currency",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_currencyID",
                  "type": "uint256"
                }
              ],
              "name": "createExchange",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "tokensToExchange",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50615875806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80631427474c1461003b5780638359289c146100a7575b600080fd5b61007e6004803603606081101561005157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356100ec565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100ea600480360360608110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610124565b005b6000602081815293815260408082208552928152828120909352825290205473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083208685168452825280832085845290915290205416156101b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806158076039913960400191505060405180910390fd5b60008383836040516101c6906102cd565b808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051809103906000f080158015610226573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff85811660008181526020818152604080832089861680855290835281842089855283529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169587169586179055805194855251949550869491937f23658fa6d505b3e3034045b3937d4239cbdaa345bfb0c4a2d6637ade8b85457c929081900390910190a450505050565b61552c806102db8339019056fe60806040523480156200001157600080fd5b506040516200552c3803806200552c83398101604081905262000034916200011f565b6000805460ff191660011790556001600160a01b038316158015906200006257506001600160a01b03821615155b6200008a5760405162461bcd60e51b815260040162000081906200015f565b60405180910390fd5b600580546001600160a01b03199081163317909155600380546001600160a01b03868116918416821790925560048054928616929093168217909255600683905514620000d9576000620000dc565b60015b60048054911515600160a01b0260ff60a01b1990921691909117905550620001aa915050565b80516001600160a01b03811681146200011a57600080fd5b919050565b60008060006060848603121562000134578283fd5b6200013f8462000102565b92506200014f6020850162000102565b9150604084015190509250925092565b6020808252602b908201527f4e696674797377617045786368616e676523636f6e7374727563746f723a494e60408201526a159053125117d25394155560aa1b606082015260800190565b61537280620001ba6000396000f3fe608060405234801561001057600080fd5b50600436106101355760003560e01c8063863ed300116100b2578063be57146811610081578063f23a6e6111610066578063f23a6e61146102c6578063f242432a146102d9578063fca16c3b146102ec57610135565b8063be571468146102a0578063e985e9c5146102b357610135565b8063863ed30014610252578063a22cb46514610265578063a9c2e36c14610278578063bc197c811461028057610135565b80632bef5e381161010957806346adf5ca116100ee57806346adf5ca146102165780634e1273f41461022c5780636ee8e1341461023f57610135565b80632bef5e38146101ee5780632eb2c2d61461020157610135565b8062fdd58e1461017057806301ffc9a71461019957806310fe9ae8146101b9578063209b96c5146101ce575b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614bd0565b60405180910390fd5b61018361017e366004613da5565b6102ff565b60405161019091906150b0565b60405180910390f35b6101ac6101a7366004613f77565b610337565b6040516101909190614540565b6101c161041e565b60405161019091906142ed565b6101e16101dc366004613e93565b61043a565b60405161019091906144f4565b6101e16101fc366004613e93565b6104db565b61021461020f366004613c63565b610573565b005b61021e61067e565b604051610190929190614461565b6101e161023a366004613dd0565b61069f565b61018361024d366004614288565b6107ec565b6101e1610260366004613ed3565b610880565b610214610273366004613d74565b6109e3565b6101c1610a7c565b61029361028e366004613c63565b610a98565b604051610190919061454b565b6101e16102ae366004613ed3565b61110f565b6101ac6102c1366004613c2b565b611267565b6102936102d4366004613d0d565b6112a2565b6102146102e7366004613d0d565b6113d3565b6101836102fa366004614288565b6114d7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602090815260408083208484529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103ca57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b8061041657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b60035473ffffffffffffffffffffffffffffffffffffffff1690565b606081818167ffffffffffffffff8111801561045557600080fd5b5060405190808252806020026020018201604052801561047f578160200160208202803683370190505b50905060005b828110156104d2576008600087878481811061049d57fe5b905060200201358152602001908152602001600020548282815181106104bf57fe5b6020908102919091010152600101610485565b50949350505050565b606081818167ffffffffffffffff811180156104f657600080fd5b50604051908082528060200260200182016040528015610520578160200160208202803683370190505b50905060005b828110156104d2576007600087878481811061053e57fe5b9050602002013581526020019081526020016000205482828151811061056057fe5b6020908102919091010152600101610526565b3373ffffffffffffffffffffffffffffffffffffffff8616148061059c575061059c8533611267565b6105f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615265602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661065d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806151d96030913960400191505060405180910390fd5b61066985858585611556565b610677858585855a86611880565b5050505050565b60045460065473ffffffffffffffffffffffffffffffffffffffff90911691565b606081518351146106fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615239602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561071557600080fd5b5060405190808252806020026020018201604052801561073f578160200160208202803683370190505b50905060005b84518110156107e4576001600086838151811061075e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106107ae57fe5b60200260200101518152602001908152602001600020548282815181106107d157fe5b6020908102919091010152600101610745565b509392505050565b600080831180156107fd5750600082115b610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f73565b6000610841856103e3611af7565b9050600061084f8285611af7565b9050600061086983610863886103e8611af7565b90611b87565b905080828161087457fe5b04979650505050505050565b606083818167ffffffffffffffff8111801561089b57600080fd5b506040519080825280602002602001820160405280156108c5578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061090057fe5b905060200201356040518363ffffffff1660e01b8152600401610924929190614461565b60206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190614270565b90506109b887878481811061098557fe5b9050602002013582600860008d8d8881811061099d57fe5b905060200201358152602001908152602001600020546107ec565b8383815181106109c457fe5b6020908102919091010152506001016108cb565b509695505050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60055473ffffffffffffffffffffffffffffffffffffffff1690565b60008082806020019051810190610aaf9190613f93565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb2d81047000000000000000000000000000000000000000000000000000000001415610ccb5760045473ffffffffffffffffffffffffffffffffffffffff163314610b4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061502d565b8451600114610b87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061476f565b60065485600081518110610b9757fe5b602002602001015114610bd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b610bde6139dd565b83806020019051810190610bf29190614048565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610c1d578151610c1f565b875b90506060610c508360200151846040015189600081518110610c3d57fe5b6020026020010151866060015186611bfb565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fd38bc77e62e239476b3e25620d73f29a4a188e808aad79f4a81aaf44871a7a308560200151866040015185604051610cbb93929190614507565b60405180910390a35050506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fdb08ec97000000000000000000000000000000000000000000000000000000001415610e2b5760035473ffffffffffffffffffffffffffffffffffffffff163314610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906149b3565b610d6e613a1b565b83806020019051810190610d8291906141d1565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610dad578151610daf565b875b90506060610dc888888560200151866040015186611fbf565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f89e4dbdd48f69e7920342e9ad9691b9a7150f254e6a0af177ccfd2556aab8bcd8a8a85604051610cbb93929190614507565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f82da2b73000000000000000000000000000000000000000000000000000000001415610f035760035473ffffffffffffffffffffffffffffffffffffffff163314610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906146ec565b610ece613a52565b83806020019051810190610ee29190613faf565b905080915050610efd878787846000015185602001516122c9565b506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f5c0bf259000000000000000000000000000000000000000000000000000000001415610fc257333014610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614af0565b610f8e613a6c565b83806020019051810190610fa29190614115565b905080915050610efd87878784600001518560200151866040015161293e565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc8c323f90000000000000000000000000000000000000000000000000000000014156110b15760045473ffffffffffffffffffffffffffffffffffffffff16331461105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906147f2565b6006548560008151811061106d57fe5b6020026020010151146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b6110e3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614fd0565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b606083818167ffffffffffffffff8111801561112a57600080fd5b50604051908082528060200260200182016040528015611154578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061118f57fe5b905060200201356040518363ffffffff1660e01b81526004016111b3929190614461565b60206040518083038186803b1580156111cb57600080fd5b505afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190614270565b905061124787878481811061121457fe5b90506020020135600860008c8c8781811061122b57fe5b90506020020135815260200190815260200160002054836114d7565b83838151811061125357fe5b60209081029190910101525060010161115a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b6040805160018082528183019092526000916060919060208083019080368337505060408051600180825281830190925292935060609291506020808301908036833701905050905085826000815181106112f957fe5b602002602001018181525050848160008151811061131357fe5b60200260200101818152505061132c8888848488610a98565b7fffffffff00000000000000000000000000000000000000000000000000000000167fbc197c8100000000000000000000000000000000000000000000000000000000146113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c2d565b507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b3373ffffffffffffffffffffffffffffffffffffffff861614806113fc57506113fc8533611267565b611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061517a602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061514f602b913960400191505060405180910390fd5b6114c985858585612ea7565b610677858585855a86612faf565b600080831180156114e85750600082115b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f16565b60006115366103e86115308688611af7565b90611af7565b9050600061154a6103e361153086896131a0565b90506109d88282613217565b80518251146115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806151a46035913960400191505060405180910390fd5b815160005b81811015611778576116468382815181106115cc57fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b60200260200101518152602001908152602001600020546131a090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120865190919087908590811061167c57fe5b602002602001015181526020019081526020016000208190555061171f8382815181106116a557fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008785815181106116fa57fe5b6020026020010151815260200190815260200160002054611b8790919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260408120865190919087908590811061175557fe5b6020908102919091018101518252810191909152604001600020556001016115b5565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561182557818101518382015260200161180d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561186457818101518382015260200161184c565b5050505090500194505050505060405180910390a45050505050565b61189f8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561195757818101518382015260200161193f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561199657818101518382015260200161197e565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156119d25781810151838201526020016119ba565b50505050905090810190601f1680156119ff5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611a2457600080fd5b5087f1158015611a38573d6000803e3d6000fd5b50505050506040513d6020811015611a4f57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806152c4603f913960400191505060405180910390fd5b505b505050505050565b600082611b0657506000610331565b82820282848281611b1357fe5b0414611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236d756c3a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082820183811015611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b60005460609060ff16611c6f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905542831015611cd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614632565b8551848167ffffffffffffffff81118015611ceb57600080fd5b50604051908082528060200260200182016040528015611d15578160200160208202803683370190505b50925060608267ffffffffffffffff81118015611d3157600080fd5b50604051908082528060200260200182016040528015611d5b578160200160208202803683370190505b509050611d6789613295565b905060005b83811015611e645760008a8281518110611d8257fe5b6020026020010151905060008a8381518110611d9a57fe5b602002602001015190506000848481518110611db257fe5b6020026020010151905060008211611df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614ce8565b60008381526008602052604081205490611e118483856114d7565b9050611e1d88826131a0565b9750808a8781518110611e2c57fe5b6020908102919091010152611e418282611b87565b60009586526008602052604090952094909455505060019092019150611d6c9050565b508115611efa57600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611ec79230928b9289910161441c565b600060405180830381600087803b158015611ee157600080fd5b505af1158015611ef5573d6000803e3d6000fd5b505050505b6003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632eb2c2d690611f5690309089908e908e9060040161430e565b600060405180830381600087803b158015611f7057600080fd5b505af1158015611f84573d6000803e3d6000fd5b50505050505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905595945050505050565b60005460609060ff1661203357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055855142841015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614875565b60008167ffffffffffffffff811180156120b057600080fd5b506040519080825280602002602001820160405280156120da578160200160208202803683370190505b50925060608267ffffffffffffffff811180156120f657600080fd5b50604051908082528060200260200182016040528015612120578160200160208202803683370190505b50905061212c89613295565b905060005b838110156122325760008a828151811061214757fe5b6020026020010151905060008a838151811061215f57fe5b60200260200101519050600084848151811061217757fe5b60200260200101519050600082116121bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614eb9565b600083815260086020526040812054906121df846121d985826131a0565b846107ec565b90506121eb8882611b87565b97506121f782826131a0565b600086815260086020526040902055895181908b908890811061221657fe5b6020908102919091010152505060019093019250612131915050565b508682101561226d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906148d2565b600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611f569230928b9289910161441c565b60005460ff1661233a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690554281101561239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614d45565b8351600060608267ffffffffffffffff811180156123b957600080fd5b506040519080825280602002602001820160405280156123e3578160200160208202803683370190505b50905060608367ffffffffffffffff811180156123ff57600080fd5b50604051908082528060200260200182016040528015612429578160200160208202803683370190505b50905060608467ffffffffffffffff8111801561244557600080fd5b5060405190808252806020026020018201604052801561246f578160200160208202803683370190505b50905061247b89613295565b905060005b858110156127db5760008a828151811061249657fe5b6020026020010151905060008a83815181106124ae57fe5b6020026020010151905060008a84815181106124c657fe5b602002602001015111612505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614578565b6000811161253f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614e5c565b60045474010000000000000000000000000000000000000000900460ff161561259e5760065482141561259e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614da2565b60008281526007602052604090205480156127145760008381526008602052604081205486519091908790879081106125d357fe5b602002602001015190506000806126056125f68588611af790919063ffffffff16565b61260085896131a0565b613217565b91509150818f898151811061261657fe5b60200260200101511015612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a93565b6126608483611b87565b6000888152600860205260409020556126798c83611b87565b9b508361269c866115308461268f576000612692565b60015b869060ff166131a0565b816126a357fe5b048b89815181106126b057fe5b602002602001018181525050818a89815181106126c957fe5b6020026020010181815250506126fb8b89815181106126e457fe5b602002602001015186611b8790919063ffffffff16565b600088815260076020526040902055506127d092505050565b60008b858151811061272257fe5b60200260200101519050633b9aca0081101561276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a36565b60008481526008602052604090208190556127858982611b87565b6000858152600760205260409020829055885190995081908990879081106127a957fe5b602002602001018181525050808786815181106127c257fe5b602002602001018181525050505b505050600101612480565b506127f78a8a856040518060200160405280600081525061357d565b60045460065460405173ffffffffffffffffffffffffffffffffffffffff9092169163f242432a918d913091908990612854907fc8c323f9000000000000000000000000000000000000000000000000000000009060200161454b565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612883959493929190614373565b600060405180830381600087803b15801561289d57600080fd5b505af11580156128b1573d6000803e3d6000fd5b505050508973ffffffffffffffffffffffffffffffffffffffff167f403f9dc4582dae52d3eeb4a22d37540ffb13c32d964c92ec5ac0d3d5628da3168a8a856040516128ff93929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050505050505050565b60005460ff166129af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055428111612a10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614b73565b8451600060608267ffffffffffffffff81118015612a2d57600080fd5b50604051908082528060200260200182016040528015612a57578160200160208202803683370190505b50905060608367ffffffffffffffff81118015612a7357600080fd5b50604051908082528060200260200182016040528015612a9d578160200160208202803683370190505b50905060608467ffffffffffffffff81118015612ab957600080fd5b50604051908082528060200260200182016040528015612ae3578160200160208202803683370190505b509050612aef8a613295565b905060005b85811015612cee5760008b8281518110612b0a57fe5b6020026020010151905060008b8381518110612b2257fe5b602002602001015190506000848481518110612b3a57fe5b6020026020010151905060006007600085815260200190815260200160002054905060008111612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906145d5565b6000848152600860205260408120549082612bb18684611af7565b81612bb857fe5b049050600083612bc88787611af7565b81612bcf57fe5b0490508f8881518110612bde57fe5b6020026020010151821015612c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c8a565b8e8881518110612c2b57fe5b6020026020010151811015612c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614dff565b612c7684876131a0565b600088815260076020526040902055612c8f83836131a0565b600088815260086020526040902055612ca88c83611b87565b9b50808b8981518110612cb757fe5b602002602001018181525050818a8981518110612cd057fe5b6020908102919091010152505060019095019450612af49350505050565b50612cfa308b8b6137b2565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a308d600654886040518563ffffffff1660e01b8152600401612d5d949392919061441c565b600060405180830381600087803b158015612d7757600080fd5b505af1158015612d8b573d6000803e3d6000fd5b50506003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632eb2c2d69150612deb9030908f908f90899060040161430e565b600060405180830381600087803b158015612e0557600080fd5b505af1158015612e19573d6000803e3d6000fd5b505050508a73ffffffffffffffffffffffffffffffffffffffff167f711e9bcb94b4cf7bc99c1cb938edc75ac7e85a136838e90abf6ee1f5adebd4238b8585604051612e6793929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320858452909152902054612ee290826131a0565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160208181526040808420888552825280842095909555928716825282528281208582529091522054612f339082611b87565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600160209081526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b612fce8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561308757818101518382015260200161306f565b50505050905090810190601f1680156130b45780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156130d757600080fd5b5087f11580156130eb573d6000803e3d6000fd5b50505050506040513d602081101561310257600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180615303603a913960400191505060405180910390fd5b60008282111561321157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008082848161322357fe5b06156132455761323e600184868161323757fe5b0490611b87565b6001613252565b82848161324e57fe5b0460005b915091505b9250929050565b6000813f8015801590611b8057507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b8051606090600181141561338957604080516001808252818301909252606091602080830190803683375050600354865192935073ffffffffffffffffffffffffffffffffffffffff169162fdd58e9150309087906000906132f357fe5b60200260200101516040518363ffffffff1660e01b8152600401613318929190614461565b60206040518083038186803b15801561333057600080fd5b505afa158015613344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133689190614270565b8160008151811061337557fe5b602090810291909101015291506104199050565b60608167ffffffffffffffff811180156133a257600080fd5b506040519080825280602002602001820160405280156133cc578160200160208202803683370190505b50905030816000815181106133dd57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015260015b828110156134a95784818151811061341957fe5b602002602001015185600183038151811061343057fe5b60200260200101511061346f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614930565b3082828151811061347c57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101613405565b506003546040517f4e1273f400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690634e1273f4906135029084908890600401614487565b60006040518083038186803b15801561351a57600080fd5b505afa15801561352e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135749190810190613f3c565b92505050610419565b81518351146135d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152946030913960400191505060405180910390fd5b825160005b818110156136a1576136488482815181106135f357fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008885815181106116fa57fe5b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120875190919088908590811061367e57fe5b6020908102919091018101518252810191909152604001600020556001016135dc565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561374f578181015183820152602001613737565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561378e578181015183820152602001613776565b5050505090500194505050505060405180910390a461067760008686865a87611880565b81518151811461380d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152096030913960400191505060405180910390fd5b60005b818110156138d55761387c83828151811061382757fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b73ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040812086519091908790859081106138b257fe5b602090810291909101810151825281019190915260400160002055600101613810565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561398357818101518382015260200161396b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156139c25781810151838201526020016139aa565b5050505090500194505050505060405180910390a450505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600081525090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b604051806040016040528060608152602001600081525090565b60405180606001604052806060815260200160608152602001600081525090565b8051610419816150fb565b60008083601f840112613aa9578081fd5b50813567ffffffffffffffff811115613ac0578182fd5b602083019150836020808302850101111561325757600080fd5b600082601f830112613aea578081fd5b8135613afd613af8826150dd565b6150b9565b818152915060208083019084810181840286018201871015613b1e57600080fd5b60005b84811015613b3d57813584529282019290820190600101613b21565b505050505092915050565b600082601f830112613b58578081fd5b8151613b66613af8826150dd565b818152915060208083019084810181840286018201871015613b8757600080fd5b60005b84811015613b3d57815184529282019290820190600101613b8a565b600082601f830112613bb6578081fd5b813567ffffffffffffffff811115613bca57fe5b613bfb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016150b9565b9150808252836020828501011115613c1257600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215613c3d578182fd5b8235613c48816150fb565b91506020830135613c58816150fb565b809150509250929050565b600080600080600060a08688031215613c7a578081fd5b8535613c85816150fb565b94506020860135613c95816150fb565b9350604086013567ffffffffffffffff80821115613cb1578283fd5b613cbd89838a01613ada565b94506060880135915080821115613cd2578283fd5b613cde89838a01613ada565b93506080880135915080821115613cf3578283fd5b50613d0088828901613ba6565b9150509295509295909350565b600080600080600060a08688031215613d24578081fd5b8535613d2f816150fb565b94506020860135613d3f816150fb565b93506040860135925060608601359150608086013567ffffffffffffffff811115613d68578182fd5b613d0088828901613ba6565b60008060408385031215613d86578182fd5b8235613d91816150fb565b915060208301358015158114613c58578182fd5b60008060408385031215613db7578182fd5b8235613dc2816150fb565b946020939093013593505050565b60008060408385031215613de2578182fd5b823567ffffffffffffffff80821115613df9578384fd5b818501915085601f830112613e0c578384fd5b8135613e1a613af8826150dd565b80828252602080830192508086018a828387028901011115613e3a578889fd5b8896505b84871015613e65578035613e51816150fb565b845260019690960195928101928101613e3e565b509096508701359350505080821115613e7c578283fd5b50613e8985828601613ada565b9150509250929050565b60008060208385031215613ea5578182fd5b823567ffffffffffffffff811115613ebb578283fd5b613ec785828601613a98565b90969095509350505050565b60008060008060408587031215613ee8578182fd5b843567ffffffffffffffff80821115613eff578384fd5b613f0b88838901613a98565b90965094506020870135915080821115613f23578384fd5b50613f3087828801613a98565b95989497509550505050565b600060208284031215613f4d578081fd5b815167ffffffffffffffff811115613f63578182fd5b613f6f84828501613b48565b949350505050565b600060208284031215613f88578081fd5b8135611b8081615120565b600060208284031215613fa4578081fd5b8151611b8081615120565b60008060408385031215613fc1578182fd5b8251613fcc81615120565b602084015190925067ffffffffffffffff80821115613fe9578283fd5b9084019060408287031215613ffc578283fd5b60405160408101818110838211171561401157fe5b604052825182811115614022578485fd5b61402e88828601613b48565b825250602083015160208201528093505050509250929050565b6000806040838503121561405a578182fd5b825161406581615120565b602084015190925067ffffffffffffffff80821115614082578283fd5b9084019060808287031215614095578283fd5b6040516080810181811083821117156140aa57fe5b6040526140b683613a8d565b81526020830151828111156140c9578485fd5b6140d588828601613b48565b6020830152506040830151828111156140ec578485fd5b6140f888828601613b48565b604083015250606083015160608201528093505050509250929050565b60008060408385031215614127578182fd5b825161413281615120565b602084015190925067ffffffffffffffff8082111561414f578283fd5b9084019060608287031215614162578283fd5b60405160608101818110838211171561417757fe5b604052825182811115614188578485fd5b61419488828601613b48565b8252506020830151828111156141a8578485fd5b6141b488828601613b48565b602083015250604083015160408201528093505050509250929050565b60008082840360808112156141e4578283fd5b83516141ef81615120565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215614220578182fd5b506040516060810181811067ffffffffffffffff8211171561423e57fe5b604052602084015161424f816150fb565b81526040848101516020830152606090940151938101939093525092909150565b600060208284031215614281578081fd5b5051919050565b60008060006060848603121561429c578081fd5b505081359360208301359350604090920135919050565b6000815180845260208085019450808401835b838110156142e2578151875295820195908201906001016142c6565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060a0604083015261434760a08301856142b3565b828103606084015261435981856142b3565b838103608090940193909352508152602001949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835260208188168185015286604085015285606085015260a06080850152845191508160a0850152825b828110156143d35785810182015185820160c0015281016143b7565b828111156143e4578360c084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156144d657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016144a4565b505050838103828501526144ea81866142b3565b9695505050505050565b600060208252611b8060208301846142b3565b60006060825261451a60608301866142b3565b828103602084015261452c81866142b3565b905082810360408401526144ea81856142b3565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f4d41585f43555252454e43590000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a204e554c4c5f544f54414c5f4c49515549444954590000000000000000606082015260800190565b60208082526035908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944000000606082015260800190565b60208082526043908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e5f5452414e5346455260608201527f5245440000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526045908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944535f4160608201527f4d4f554e54000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526042908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f4445504f53495460608201527f4544000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e908201527f63793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526044908201527f4e696674797377617045786368616e6765235f676574546f6b656e526573657260408201527f7665733a20554e534f525445445f4f525f4455504c49434154455f544f4b454e60608201527f5f49445300000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526044908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f5452414e53464560608201527f5252454400000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20494e56414c49445f43555252454e43595f414d4f554e540000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204d41585f43555252454e43595f414d4f554e545f4558434545444544000000606082015260800190565b6020808252604a908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4e494654595f544f4b454e535f5460608201527f52414e5346455252454400000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b60208082526024908201527f4e696674797377617045786368616e67653a554e535550504f525445445f4d4560408201527f54484f4400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252603f908201527f4e696674797377617045786368616e6765236f6e45524331313535526563656960408201527f7665643a20494e56414c49445f4f4e52454345495645445f4d45535341474500606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f72656d6f76654c697175696469908201527f74793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526036908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a204e554c4c5f544f4b454e535f424f5547485400000000000000000000606082015260800190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20444541444c494e455f45584345454445440000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f2043555252454e43595f504f4f4c5f464f5242494444454e0000000000000000606082015260800190565b60208082526037908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20494e53554646494349454e545f544f4b454e53000000000000000000606082015260800190565b60208082526033908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f544f4b454e535f414d4f554e5400000000000000000000000000606082015260800190565b60208082526034908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a204e554c4c5f544f4b454e535f534f4c44000000000000000000000000606082015260800190565b6020808252602c908201527f4e696674797377617045786368616e67652367657442757950726963653a204560408201527f4d5054595f524553455256450000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f4e696674797377617045786368616e67652367657453656c6c50726963653a2060408201527f454d5054595f5245534552564500000000000000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4d4554484f440000000000000000606082015260800190565b60208082526046908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f5452414e5360608201527f4645525245440000000000000000000000000000000000000000000000000000608082015260a00190565b90815260200190565b60405181810167ffffffffffffffff811182821017156150d557fe5b604052919050565b600067ffffffffffffffff8211156150f157fe5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff8116811461511d57600080fd5b50565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461511d57600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135354d696e744275726e2362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a26469706673582212200de16fc0245d81d028816ad311c89dbbc3d6e964494193026135bf9ad24f1ca264736f6c634300070400334e6966747973776170466163746f72792363726561746545786368616e67653a2045584348414e47455f414c52454144595f43524541544544a26469706673582212204efa1c0526327dd61bbeca928a86759c98b1f1180adeed153dbab24c7082a29b64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5875 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1427474C EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8359289C EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xEC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x124 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 DUP2 MSTORE SWAP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 MSTORE SWAP3 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP1 SWAP4 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5807 PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP1 PUSH2 0x2CD JUMP JUMPDEST DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x226 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP7 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP10 DUP6 MSTORE DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP6 DUP8 AND SWAP6 DUP7 OR SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP5 SWAP6 POP DUP7 SWAP5 SWAP2 SWAP4 PUSH32 0x23658FA6D505B3E3034045B3937D4239CBDAA345BFB0C4A2D6637ADE8B85457C SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x552C DUP1 PUSH2 0x2DB DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x552C CODESIZE SUB DUP1 PUSH3 0x552C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x62 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST PUSH3 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x81 SWAP1 PUSH3 0x15F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND CALLER OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP5 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP4 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE EQ PUSH3 0xD9 JUMPI PUSH1 0x0 PUSH3 0xDC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x4 DUP1 SLOAD SWAP2 ISZERO ISZERO PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x1AA SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x134 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH3 0x13F DUP5 PUSH3 0x102 JUMP JUMPDEST SWAP3 POP PUSH3 0x14F PUSH1 0x20 DUP6 ADD PUSH3 0x102 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E676523636F6E7374727563746F723A494E PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x159053125117D253941555 PUSH1 0xAA SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH2 0x5372 DUP1 PUSH3 0x1BA PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x135 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x863ED300 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xBE571468 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xF23A6E61 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0xFCA16C3B EQ PUSH2 0x2EC JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0xBE571468 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2B3 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x863ED300 EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xA9C2E36C EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x280 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x2BEF5E38 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x46ADF5CA GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x46ADF5CA EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x6EE8E134 EQ PUSH2 0x23F JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x2BEF5E38 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x201 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x10FE9AE8 EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x209B96C5 EQ PUSH2 0x1CE JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4BD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x183 PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0x3DA5 JUMP JUMPDEST PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x50B0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AC PUSH2 0x1A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F77 JUMP JUMPDEST PUSH2 0x337 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x4540 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x42ED JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x1DC CALLDATASIZE PUSH1 0x4 PUSH2 0x3E93 JUMP JUMPDEST PUSH2 0x43A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x44F4 JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x3E93 JUMP JUMPDEST PUSH2 0x4DB JUMP JUMPDEST PUSH2 0x214 PUSH2 0x20F CALLDATASIZE PUSH1 0x4 PUSH2 0x3C63 JUMP JUMPDEST PUSH2 0x573 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x21E PUSH2 0x67E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x23A CALLDATASIZE PUSH1 0x4 PUSH2 0x3DD0 JUMP JUMPDEST PUSH2 0x69F JUMP JUMPDEST PUSH2 0x183 PUSH2 0x24D CALLDATASIZE PUSH1 0x4 PUSH2 0x4288 JUMP JUMPDEST PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x260 CALLDATASIZE PUSH1 0x4 PUSH2 0x3ED3 JUMP JUMPDEST PUSH2 0x880 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D74 JUMP JUMPDEST PUSH2 0x9E3 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0xA7C JUMP JUMPDEST PUSH2 0x293 PUSH2 0x28E CALLDATASIZE PUSH1 0x4 PUSH2 0x3C63 JUMP JUMPDEST PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x454B JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x2AE CALLDATASIZE PUSH1 0x4 PUSH2 0x3ED3 JUMP JUMPDEST PUSH2 0x110F JUMP JUMPDEST PUSH2 0x1AC PUSH2 0x2C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C2B JUMP JUMPDEST PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x293 PUSH2 0x2D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D0D JUMP JUMPDEST PUSH2 0x12A2 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x2E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D0D JUMP JUMPDEST PUSH2 0x13D3 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x2FA CALLDATASIZE PUSH1 0x4 PUSH2 0x4288 JUMP JUMPDEST PUSH2 0x14D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x3CA JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x416 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x47F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x8 PUSH1 0x0 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x49D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4BF JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x485 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x520 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x7 PUSH1 0x0 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x53E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x560 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x526 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x59C JUMPI POP PUSH2 0x59C DUP6 CALLER PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x5F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5265 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x65D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51D9 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x669 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1556 JUMP JUMPDEST PUSH2 0x677 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1880 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x6FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5239 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x73F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x7E4 JUMPI PUSH1 0x1 PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x75E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x7AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7D1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x745 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP1 ISZERO PUSH2 0x7FD JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x833 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4F73 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x841 DUP6 PUSH2 0x3E3 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x84F DUP3 DUP6 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x869 DUP4 PUSH2 0x863 DUP9 PUSH2 0x3E8 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 PUSH2 0x1B87 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x874 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x8C5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x9D8 JUMPI PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xFDD58E ADDRESS DUP12 DUP12 DUP7 DUP2 DUP2 LT PUSH2 0x900 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x924 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x950 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST SWAP1 POP PUSH2 0x9B8 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x985 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP3 PUSH1 0x8 PUSH1 0x0 DUP14 DUP14 DUP9 DUP2 DUP2 LT PUSH2 0x99D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x7EC JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9C4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x8CB JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x3F93 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xB2D8104700000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xCCB JUMPI PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xB4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x502D JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 EQ PUSH2 0xB87 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x476F JUMP JUMPDEST PUSH1 0x6 SLOAD DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xB97 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD EQ PUSH2 0xBD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x468F JUMP JUMPDEST PUSH2 0xBDE PUSH2 0x39DD JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xBF2 SWAP2 SWAP1 PUSH2 0x4048 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xC1D JUMPI DUP2 MLOAD PUSH2 0xC1F JUMP JUMPDEST DUP8 JUMPDEST SWAP1 POP PUSH1 0x60 PUSH2 0xC50 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC3D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD DUP7 PUSH2 0x1BFB JUMP JUMPDEST SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD38BC77E62E239476B3E25620D73F29A4A188E808AAD79F4A81AAF44871A7A30 DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 MLOAD PUSH2 0xCBB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP PUSH2 0x10E3 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xDB08EC9700000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xE2B JUMPI PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xD66 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x49B3 JUMP JUMPDEST PUSH2 0xD6E PUSH2 0x3A1B JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xD82 SWAP2 SWAP1 PUSH2 0x41D1 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xDAD JUMPI DUP2 MLOAD PUSH2 0xDAF JUMP JUMPDEST DUP8 JUMPDEST SWAP1 POP PUSH1 0x60 PUSH2 0xDC8 DUP9 DUP9 DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH2 0x1FBF JUMP JUMPDEST SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x89E4DBDD48F69E7920342E9AD9691B9A7150F254E6A0AF177CCFD2556AAB8BCD DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD PUSH2 0xCBB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x82DA2B7300000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xF03 JUMPI PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xEC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x46EC JUMP JUMPDEST PUSH2 0xECE PUSH2 0x3A52 JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xEE2 SWAP2 SWAP1 PUSH2 0x3FAF JUMP JUMPDEST SWAP1 POP DUP1 SWAP2 POP POP PUSH2 0xEFD DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x22C9 JUMP JUMPDEST POP PUSH2 0x10E3 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x5C0BF25900000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xFC2 JUMPI CALLER ADDRESS EQ PUSH2 0xF86 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4AF0 JUMP JUMPDEST PUSH2 0xF8E PUSH2 0x3A6C JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xFA2 SWAP2 SWAP1 PUSH2 0x4115 JUMP JUMPDEST SWAP1 POP DUP1 SWAP2 POP POP PUSH2 0xEFD DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x293E JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xC8C323F900000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x10B1 JUMPI PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x105D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x47F2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x106D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD EQ PUSH2 0x10AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x468F JUMP JUMPDEST PUSH2 0x10E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4FD0 JUMP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x112A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1154 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x9D8 JUMPI PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xFDD58E ADDRESS DUP12 DUP12 DUP7 DUP2 DUP2 LT PUSH2 0x118F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11B3 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1203 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST SWAP1 POP PUSH2 0x1247 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x1214 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x8 PUSH1 0x0 DUP13 DUP13 DUP8 DUP2 DUP2 LT PUSH2 0x122B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 PUSH2 0x14D7 JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1253 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x115A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x12F9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1313 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x132C DUP9 DUP9 DUP5 DUP5 DUP9 PUSH2 0xA98 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x13A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4C2D JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x13FC JUMPI POP PUSH2 0x13FC DUP6 CALLER PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x1451 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x517A PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x14BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x514F PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x14C9 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2EA7 JUMP JUMPDEST PUSH2 0x677 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x2FAF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP1 ISZERO PUSH2 0x14E8 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x151E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1536 PUSH2 0x3E8 PUSH2 0x1530 DUP7 DUP9 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x154A PUSH2 0x3E3 PUSH2 0x1530 DUP7 DUP10 PUSH2 0x31A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x9D8 DUP3 DUP3 PUSH2 0x3217 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x15B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51A4 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1778 JUMPI PUSH2 0x1646 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x15CC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1621 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x31A0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x167C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x171F DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x16A5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x16FA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1B87 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x1755 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x15B5 JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1825 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x180D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1864 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x184C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x189F DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x325E JUMP JUMPDEST ISZERO PUSH2 0x1AEF JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1957 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x193F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1996 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x197E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19D2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19BA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x19FF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1A38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1AED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x52C4 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B06 JUMPI POP PUSH1 0x0 PUSH2 0x331 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B13 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1B80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236D756C3A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1B80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x1C6F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP4 LT ISZERO PUSH2 0x1CD1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4632 JUMP JUMPDEST DUP6 MLOAD DUP5 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1CEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1D15 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1D31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1D5B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x1D67 DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E64 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D82 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1DB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP3 GT PUSH2 0x1DF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4CE8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x1E11 DUP5 DUP4 DUP6 PUSH2 0x14D7 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E1D DUP9 DUP3 PUSH2 0x31A0 JUMP JUMPDEST SWAP8 POP DUP1 DUP11 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x1E2C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x1E41 DUP3 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 SWAP6 DUP7 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP6 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x1D6C SWAP1 POP JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1EFA JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xF242432A SWAP3 PUSH2 0x1EC7 SWAP3 ADDRESS SWAP3 DUP12 SWAP3 DUP10 SWAP2 ADD PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2EB2C2D6 SWAP1 PUSH2 0x1F56 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x430E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x2033 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE DUP6 MLOAD TIMESTAMP DUP5 LT ISZERO PUSH2 0x2097 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4875 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x20B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x20DA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x20F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2120 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x212C DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2232 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2147 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x215F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2177 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP3 GT PUSH2 0x21BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x21DF DUP5 PUSH2 0x21D9 DUP6 DUP3 PUSH2 0x31A0 JUMP JUMPDEST DUP5 PUSH2 0x7EC JUMP JUMPDEST SWAP1 POP PUSH2 0x21EB DUP9 DUP3 PUSH2 0x1B87 JUMP JUMPDEST SWAP8 POP PUSH2 0x21F7 DUP3 DUP3 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP10 MLOAD DUP2 SWAP1 DUP12 SWAP1 DUP9 SWAP1 DUP2 LT PUSH2 0x2216 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x2131 SWAP2 POP POP JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x226D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x48D2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xF242432A SWAP3 PUSH2 0x1F56 SWAP3 ADDRESS SWAP3 DUP12 SWAP3 DUP10 SWAP2 ADD PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x233A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP2 LT ISZERO PUSH2 0x239C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4D45 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x23B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x23E3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x23FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2429 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x246F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x247B DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x27DB JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2496 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x24C6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT PUSH2 0x2505 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x253F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4E5C JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x259E JUMPI PUSH1 0x6 SLOAD DUP3 EQ ISZERO PUSH2 0x259E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4DA2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2714 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x25D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x2605 PUSH2 0x25F6 DUP6 DUP9 PUSH2 0x1AF7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2600 DUP6 DUP10 PUSH2 0x31A0 JUMP JUMPDEST PUSH2 0x3217 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 DUP16 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2616 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x2656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4A93 JUMP JUMPDEST PUSH2 0x2660 DUP5 DUP4 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2679 DUP13 DUP4 PUSH2 0x1B87 JUMP JUMPDEST SWAP12 POP DUP4 PUSH2 0x269C DUP7 PUSH2 0x1530 DUP5 PUSH2 0x268F JUMPI PUSH1 0x0 PUSH2 0x2692 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP7 SWAP1 PUSH1 0xFF AND PUSH2 0x31A0 JUMP JUMPDEST DUP2 PUSH2 0x26A3 JUMPI INVALID JUMPDEST DIV DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26B0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26C9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x26FB DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26E4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH2 0x1B87 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH2 0x27D0 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2722 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH4 0x3B9ACA00 DUP2 LT ISZERO PUSH2 0x276A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4A36 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH2 0x2785 DUP10 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE DUP9 MLOAD SWAP1 SWAP10 POP DUP2 SWAP1 DUP10 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x27A9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x27C2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0x2480 JUMP JUMPDEST POP PUSH2 0x27F7 DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x357D JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xF242432A SWAP2 DUP14 SWAP2 ADDRESS SWAP2 SWAP1 DUP10 SWAP1 PUSH2 0x2854 SWAP1 PUSH32 0xC8C323F900000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x20 ADD PUSH2 0x454B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2883 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4373 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x289D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x403F9DC4582DAE52D3EEB4A22D37540FFB13C32D964C92EC5AC0D3D5628DA316 DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD PUSH2 0x28FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x29AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP2 GT PUSH2 0x2A10 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4B73 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2A2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2A57 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2A73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2A9D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2AB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2AE3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x2AEF DUP11 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2CEE JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2B0A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2B22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2B3A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x2B96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP3 PUSH2 0x2BB1 DUP7 DUP5 PUSH2 0x1AF7 JUMP JUMPDEST DUP2 PUSH2 0x2BB8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x2BC8 DUP8 DUP8 PUSH2 0x1AF7 JUMP JUMPDEST DUP2 PUSH2 0x2BCF JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP16 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x2BDE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 LT ISZERO PUSH2 0x2C1F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4C8A JUMP JUMPDEST DUP15 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x2C2B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 LT ISZERO PUSH2 0x2C6C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x2C76 DUP5 DUP8 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2C8F DUP4 DUP4 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2CA8 DUP13 DUP4 PUSH2 0x1B87 JUMP JUMPDEST SWAP12 POP DUP1 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2CB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2CD0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 POP PUSH2 0x2AF4 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH2 0x2CFA ADDRESS DUP12 DUP12 PUSH2 0x37B2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF242432A ADDRESS DUP14 PUSH1 0x6 SLOAD DUP9 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D5D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0x2EB2C2D6 SWAP2 POP PUSH2 0x2DEB SWAP1 ADDRESS SWAP1 DUP16 SWAP1 DUP16 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x430E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x711E9BCB94B4CF7BC99C1CB938EDC75AC7E85A136838E90ABF6EE1F5ADEBD423 DUP12 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2E67 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2EE2 SWAP1 DUP3 PUSH2 0x31A0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP9 DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP3 DUP8 AND DUP3 MSTORE DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x2F33 SWAP1 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2FCE DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x325E JUMP JUMPDEST ISZERO PUSH2 0x1AEF JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3087 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x306F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x30B4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x30EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1AED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5303 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x3211 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x3223 JUMPI INVALID JUMPDEST MOD ISZERO PUSH2 0x3245 JUMPI PUSH2 0x323E PUSH1 0x1 DUP5 DUP7 DUP2 PUSH2 0x3237 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3252 JUMP JUMPDEST DUP3 DUP5 DUP2 PUSH2 0x324E JUMPI INVALID JUMPDEST DIV PUSH1 0x0 JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1B80 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 DUP2 EQ ISZERO PUSH2 0x3389 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x3 SLOAD DUP7 MLOAD SWAP3 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH3 0xFDD58E SWAP2 POP ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x32F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3318 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3344 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3368 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3375 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP2 POP PUSH2 0x419 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x33A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x33CC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP ADDRESS DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x33DD JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x34A9 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3419 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3430 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT PUSH2 0x346F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4930 JUMP JUMPDEST ADDRESS DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x347C JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3405 JUMP JUMPDEST POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x4E1273F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x4E1273F4 SWAP1 PUSH2 0x3502 SWAP1 DUP5 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4487 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x351A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x352E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x3574 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3F3C JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x419 JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x35D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5294 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x36A1 JUMPI PUSH2 0x3648 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x35F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x16FA JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP8 MLOAD SWAP1 SWAP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x367E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x35DC JUMP JUMPDEST POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x374F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3737 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x378E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3776 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x677 PUSH1 0x0 DUP7 DUP7 DUP7 GAS DUP8 PUSH2 0x1880 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x380D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5209 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x38D5 JUMPI PUSH2 0x387C DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3827 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1621 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x38B2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x3810 JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3983 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x396B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x39C2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39AA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x419 DUP2 PUSH2 0x50FB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3AA9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AC0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3AEA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3AFD PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST PUSH2 0x50B9 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3B1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3B3D JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3B21 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B58 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3B66 PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3B87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3B3D JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3B8A JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3BB6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3BCA JUMPI INVALID JUMPDEST PUSH2 0x3BFB PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x50B9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3C12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3C3D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3C48 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3C58 DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3C7A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3C85 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3CB1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3CBD DUP10 DUP4 DUP11 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CD2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3CDE DUP10 DUP4 DUP11 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CF3 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3D00 DUP9 DUP3 DUP10 ADD PUSH2 0x3BA6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3D24 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3D2F DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3D3F DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D68 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3D00 DUP9 DUP3 DUP10 ADD PUSH2 0x3BA6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D86 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3D91 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3C58 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DB7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DC2 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DE2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DF9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E0C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3E1A PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x3E3A JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x3E65 JUMPI DUP1 CALLDATALOAD PUSH2 0x3E51 DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x3E3E JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x3E7C JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3E89 DUP6 DUP3 DUP7 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EA5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3EBB JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3EC7 DUP6 DUP3 DUP7 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3EE8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3EFF JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x3F0B DUP9 DUP4 DUP10 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3F23 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x3F30 DUP8 DUP3 DUP9 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F4D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3F63 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3F6F DUP5 DUP3 DUP6 ADD PUSH2 0x3B48 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F88 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1B80 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FA4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1B80 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FC1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x3FCC DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3FE9 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x40 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x3FFC JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x4011 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x4022 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x402E DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x405A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4065 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4082 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x80 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x4095 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x40AA JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x40B6 DUP4 PUSH2 0x3A8D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x40C9 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x40D5 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x40EC JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x40F8 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4127 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4132 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x414F JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x60 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x4162 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x4177 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x4188 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x4194 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x41A8 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x41B4 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x41E4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x41EF DUP2 PUSH2 0x5120 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD SLT ISZERO PUSH2 0x4220 JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x423E JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x424F DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 DUP2 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4281 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x429C JUMPI DUP1 DUP2 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42E2 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x42C6 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4347 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x42B3 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x4359 DUP2 DUP6 PUSH2 0x42B3 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP9 AND DUP2 DUP6 ADD MSTORE DUP7 PUSH1 0x40 DUP6 ADD MSTORE DUP6 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP6 ADD MSTORE DUP5 MLOAD SWAP2 POP DUP2 PUSH1 0xA0 DUP6 ADD MSTORE DUP3 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x43D3 JUMPI DUP6 DUP2 ADD DUP3 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xC0 ADD MSTORE DUP2 ADD PUSH2 0x43B7 JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x43E4 JUMPI DUP4 PUSH1 0xC0 DUP5 DUP8 ADD ADD MSTORE JUMPDEST POP POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0xC0 ADD SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x44D6 JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x44A4 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE PUSH2 0x44EA DUP2 DUP7 PUSH2 0x42B3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1B80 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x42B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x451A PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x42B3 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x452C DUP2 DUP7 PUSH2 0x42B3 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x44EA DUP2 DUP6 PUSH2 0x42B3 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204E554C4C5F4D41585F43555252454E43590000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A204E554C4C5F544F54414C5F4C49515549444954590000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F63757272656E6379546F546F6B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656E3A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F4944000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x43 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E5F5452414E53464552 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5245440000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x45 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F4944535F41 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4D4F554E54000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x42 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E535F4445504F534954 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4544000000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x63793A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x40 SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E SWAP1 DUP3 ADD MSTORE PUSH32 0x63793A20494E53554646494349454E545F43555252454E43595F414D4F554E54 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x44 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F676574546F6B656E5265736572 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7665733A20554E534F525445445F4F525F4455504C49434154455F544F4B454E PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5F49445300000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x44 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E535F5452414E534645 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5252454400000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x20494E56414C49445F43555252454E43595F414D4F554E540000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204D41585F43555252454E43595F414D4F554E545F4558434545444544000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x4A SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F4E494654595F544F4B454E535F54 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x52414E5346455252454400000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67653A554E535550504F525445445F4D45 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x54484F4400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3F SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135355265636569 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7665643A20494E56414C49445F4F4E52454345495645445F4D45535341474500 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x40 SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 SWAP1 DUP3 ADD MSTORE PUSH32 0x74793A20494E53554646494349454E545F43555252454E43595F414D4F554E54 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F63757272656E6379546F546F6B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656E3A204E554C4C5F544F4B454E535F424F5547485400000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x20444541444C494E455F45584345454445440000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2043555252454E43595F504F4F4C5F464F5242494444454E0000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A20494E53554646494349454E545F544F4B454E53000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204E554C4C5F544F4B454E535F414D4F554E5400000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x63793A204E554C4C5F544F4B454E535F534F4C44000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67652367657442757950726963653A2045 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4D5054595F524553455256450000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67652367657453656C6C50726963653A20 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x454D5054595F5245534552564500000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F4D4554484F440000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x46 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F5452414E53 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4645525245440000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x50D5 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x50F1 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x511D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x511D JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x68427572 PUSH15 0x3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x684D696E PUSH21 0x3A20494E56414C49445F4152524159535F4C454E47 SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD 0xE1 PUSH16 0xC0245D81D028816AD311C89DBBC3D6E9 PUSH5 0x4941930261 CALLDATALOAD 0xBF SWAP11 0xD2 0x4F SHR LOG2 PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER 0x4E PUSH10 0x66747973776170466163 PUSH21 0x6F72792363726561746545786368616E67653A2045 PC NUMBER 0x48 COINBASE 0x4E SELFBALANCE GASLIMIT 0x5F COINBASE 0x4C MSTORE GASLIMIT COINBASE DIFFICULTY MSIZE 0x5F NUMBER MSTORE GASLIMIT COINBASE SLOAD GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E STATICCALL SHR SDIV 0x26 ORIGIN PUSH30 0xD61BBECA928A86759C98B1F1180ADEED153DBAB24C7082A29B64736F6C63 NUMBER STOP SMOD DIV STOP CALLER ",
              "sourceMap": "144:1325:1:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c80631427474c1461003b5780638359289c146100a7575b600080fd5b61007e6004803603606081101561005157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356100ec565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100ea600480360360608110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610124565b005b6000602081815293815260408082208552928152828120909352825290205473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152602081815260408083208685168452825280832085845290915290205416156101b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806158076039913960400191505060405180910390fd5b60008383836040516101c6906102cd565b808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051809103906000f080158015610226573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff85811660008181526020818152604080832089861680855290835281842089855283529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169587169586179055805194855251949550869491937f23658fa6d505b3e3034045b3937d4239cbdaa345bfb0c4a2d6637ade8b85457c929081900390910190a450505050565b61552c806102db8339019056fe60806040523480156200001157600080fd5b506040516200552c3803806200552c83398101604081905262000034916200011f565b6000805460ff191660011790556001600160a01b038316158015906200006257506001600160a01b03821615155b6200008a5760405162461bcd60e51b815260040162000081906200015f565b60405180910390fd5b600580546001600160a01b03199081163317909155600380546001600160a01b03868116918416821790925560048054928616929093168217909255600683905514620000d9576000620000dc565b60015b60048054911515600160a01b0260ff60a01b1990921691909117905550620001aa915050565b80516001600160a01b03811681146200011a57600080fd5b919050565b60008060006060848603121562000134578283fd5b6200013f8462000102565b92506200014f6020850162000102565b9150604084015190509250925092565b6020808252602b908201527f4e696674797377617045786368616e676523636f6e7374727563746f723a494e60408201526a159053125117d25394155560aa1b606082015260800190565b61537280620001ba6000396000f3fe608060405234801561001057600080fd5b50600436106101355760003560e01c8063863ed300116100b2578063be57146811610081578063f23a6e6111610066578063f23a6e61146102c6578063f242432a146102d9578063fca16c3b146102ec57610135565b8063be571468146102a0578063e985e9c5146102b357610135565b8063863ed30014610252578063a22cb46514610265578063a9c2e36c14610278578063bc197c811461028057610135565b80632bef5e381161010957806346adf5ca116100ee57806346adf5ca146102165780634e1273f41461022c5780636ee8e1341461023f57610135565b80632bef5e38146101ee5780632eb2c2d61461020157610135565b8062fdd58e1461017057806301ffc9a71461019957806310fe9ae8146101b9578063209b96c5146101ce575b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614bd0565b60405180910390fd5b61018361017e366004613da5565b6102ff565b60405161019091906150b0565b60405180910390f35b6101ac6101a7366004613f77565b610337565b6040516101909190614540565b6101c161041e565b60405161019091906142ed565b6101e16101dc366004613e93565b61043a565b60405161019091906144f4565b6101e16101fc366004613e93565b6104db565b61021461020f366004613c63565b610573565b005b61021e61067e565b604051610190929190614461565b6101e161023a366004613dd0565b61069f565b61018361024d366004614288565b6107ec565b6101e1610260366004613ed3565b610880565b610214610273366004613d74565b6109e3565b6101c1610a7c565b61029361028e366004613c63565b610a98565b604051610190919061454b565b6101e16102ae366004613ed3565b61110f565b6101ac6102c1366004613c2b565b611267565b6102936102d4366004613d0d565b6112a2565b6102146102e7366004613d0d565b6113d3565b6101836102fa366004614288565b6114d7565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602090815260408083208484529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103ca57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b8061041657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b60035473ffffffffffffffffffffffffffffffffffffffff1690565b606081818167ffffffffffffffff8111801561045557600080fd5b5060405190808252806020026020018201604052801561047f578160200160208202803683370190505b50905060005b828110156104d2576008600087878481811061049d57fe5b905060200201358152602001908152602001600020548282815181106104bf57fe5b6020908102919091010152600101610485565b50949350505050565b606081818167ffffffffffffffff811180156104f657600080fd5b50604051908082528060200260200182016040528015610520578160200160208202803683370190505b50905060005b828110156104d2576007600087878481811061053e57fe5b9050602002013581526020019081526020016000205482828151811061056057fe5b6020908102919091010152600101610526565b3373ffffffffffffffffffffffffffffffffffffffff8616148061059c575061059c8533611267565b6105f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180615265602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661065d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806151d96030913960400191505060405180910390fd5b61066985858585611556565b610677858585855a86611880565b5050505050565b60045460065473ffffffffffffffffffffffffffffffffffffffff90911691565b606081518351146106fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615239602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561071557600080fd5b5060405190808252806020026020018201604052801561073f578160200160208202803683370190505b50905060005b84518110156107e4576001600086838151811061075e57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106107ae57fe5b60200260200101518152602001908152602001600020548282815181106107d157fe5b6020908102919091010152600101610745565b509392505050565b600080831180156107fd5750600082115b610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f73565b6000610841856103e3611af7565b9050600061084f8285611af7565b9050600061086983610863886103e8611af7565b90611b87565b905080828161087457fe5b04979650505050505050565b606083818167ffffffffffffffff8111801561089b57600080fd5b506040519080825280602002602001820160405280156108c5578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061090057fe5b905060200201356040518363ffffffff1660e01b8152600401610924929190614461565b60206040518083038186803b15801561093c57600080fd5b505afa158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190614270565b90506109b887878481811061098557fe5b9050602002013582600860008d8d8881811061099d57fe5b905060200201358152602001908152602001600020546107ec565b8383815181106109c457fe5b6020908102919091010152506001016108cb565b509695505050505050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b60055473ffffffffffffffffffffffffffffffffffffffff1690565b60008082806020019051810190610aaf9190613f93565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167fb2d81047000000000000000000000000000000000000000000000000000000001415610ccb5760045473ffffffffffffffffffffffffffffffffffffffff163314610b4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061502d565b8451600114610b87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061476f565b60065485600081518110610b9757fe5b602002602001015114610bd6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b610bde6139dd565b83806020019051810190610bf29190614048565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610c1d578151610c1f565b875b90506060610c508360200151846040015189600081518110610c3d57fe5b6020026020010151866060015186611bfb565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fd38bc77e62e239476b3e25620d73f29a4a188e808aad79f4a81aaf44871a7a308560200151866040015185604051610cbb93929190614507565b60405180910390a35050506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fdb08ec97000000000000000000000000000000000000000000000000000000001415610e2b5760035473ffffffffffffffffffffffffffffffffffffffff163314610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906149b3565b610d6e613a1b565b83806020019051810190610d8291906141d1565b80519092506000915073ffffffffffffffffffffffffffffffffffffffff1615610dad578151610daf565b875b90506060610dc888888560200151866040015186611fbf565b90508173ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f89e4dbdd48f69e7920342e9ad9691b9a7150f254e6a0af177ccfd2556aab8bcd8a8a85604051610cbb93929190614507565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f82da2b73000000000000000000000000000000000000000000000000000000001415610f035760035473ffffffffffffffffffffffffffffffffffffffff163314610ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906146ec565b610ece613a52565b83806020019051810190610ee29190613faf565b905080915050610efd878787846000015185602001516122c9565b506110e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f5c0bf259000000000000000000000000000000000000000000000000000000001415610fc257333014610f86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614af0565b610f8e613a6c565b83806020019051810190610fa29190614115565b905080915050610efd87878784600001518560200151866040015161293e565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc8c323f90000000000000000000000000000000000000000000000000000000014156110b15760045473ffffffffffffffffffffffffffffffffffffffff16331461105d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906147f2565b6006548560008151811061106d57fe5b6020026020010151146110ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101679061468f565b6110e3565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614fd0565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b606083818167ffffffffffffffff8111801561112a57600080fd5b50604051908082528060200260200182016040528015611154578160200160208202803683370190505b50905060005b828110156109d85760035460009073ffffffffffffffffffffffffffffffffffffffff1662fdd58e308b8b8681811061118f57fe5b905060200201356040518363ffffffff1660e01b81526004016111b3929190614461565b60206040518083038186803b1580156111cb57600080fd5b505afa1580156111df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112039190614270565b905061124787878481811061121457fe5b90506020020135600860008c8c8781811061122b57fe5b90506020020135815260200190815260200160002054836114d7565b83838151811061125357fe5b60209081029190910101525060010161115a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205460ff1690565b6040805160018082528183019092526000916060919060208083019080368337505060408051600180825281830190925292935060609291506020808301908036833701905050905085826000815181106112f957fe5b602002602001018181525050848160008151811061131357fe5b60200260200101818152505061132c8888848488610a98565b7fffffffff00000000000000000000000000000000000000000000000000000000167fbc197c8100000000000000000000000000000000000000000000000000000000146113a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c2d565b507ff23a6e6100000000000000000000000000000000000000000000000000000000979650505050505050565b3373ffffffffffffffffffffffffffffffffffffffff861614806113fc57506113fc8533611267565b611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061517a602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061514f602b913960400191505060405180910390fd5b6114c985858585612ea7565b610677858585855a86612faf565b600080831180156114e85750600082115b61151e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614f16565b60006115366103e86115308688611af7565b90611af7565b9050600061154a6103e361153086896131a0565b90506109d88282613217565b80518251146115b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806151a46035913960400191505060405180910390fd5b815160005b81811015611778576116468382815181106115cc57fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b60200260200101518152602001908152602001600020546131a090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120865190919087908590811061167c57fe5b602002602001015181526020019081526020016000208190555061171f8382815181106116a557fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008785815181106116fa57fe5b6020026020010151815260200190815260200160002054611b8790919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260408120865190919087908590811061175557fe5b6020908102919091018101518252810191909152604001600020556001016115b5565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561182557818101518382015260200161180d565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561186457818101518382015260200161184c565b5050505090500194505050505060405180910390a45050505050565b61189f8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561195757818101518382015260200161193f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561199657818101518382015260200161197e565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156119d25781810151838201526020016119ba565b50505050905090810190601f1680156119ff5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611a2457600080fd5b5087f1158015611a38573d6000803e3d6000fd5b50505050506040513d6020811015611a4f57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806152c4603f913960400191505060405180910390fd5b505b505050505050565b600082611b0657506000610331565b82820282848281611b1357fe5b0414611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236d756c3a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082820183811015611b8057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b60005460609060ff16611c6f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905542831015611cd1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614632565b8551848167ffffffffffffffff81118015611ceb57600080fd5b50604051908082528060200260200182016040528015611d15578160200160208202803683370190505b50925060608267ffffffffffffffff81118015611d3157600080fd5b50604051908082528060200260200182016040528015611d5b578160200160208202803683370190505b509050611d6789613295565b905060005b83811015611e645760008a8281518110611d8257fe5b6020026020010151905060008a8381518110611d9a57fe5b602002602001015190506000848481518110611db257fe5b6020026020010151905060008211611df6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614ce8565b60008381526008602052604081205490611e118483856114d7565b9050611e1d88826131a0565b9750808a8781518110611e2c57fe5b6020908102919091010152611e418282611b87565b60009586526008602052604090952094909455505060019092019150611d6c9050565b508115611efa57600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611ec79230928b9289910161441c565b600060405180830381600087803b158015611ee157600080fd5b505af1158015611ef5573d6000803e3d6000fd5b505050505b6003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632eb2c2d690611f5690309089908e908e9060040161430e565b600060405180830381600087803b158015611f7057600080fd5b505af1158015611f84573d6000803e3d6000fd5b50505050505050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905595945050505050565b60005460609060ff1661203357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055855142841015612097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614875565b60008167ffffffffffffffff811180156120b057600080fd5b506040519080825280602002602001820160405280156120da578160200160208202803683370190505b50925060608267ffffffffffffffff811180156120f657600080fd5b50604051908082528060200260200182016040528015612120578160200160208202803683370190505b50905061212c89613295565b905060005b838110156122325760008a828151811061214757fe5b6020026020010151905060008a838151811061215f57fe5b60200260200101519050600084848151811061217757fe5b60200260200101519050600082116121bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614eb9565b600083815260086020526040812054906121df846121d985826131a0565b846107ec565b90506121eb8882611b87565b97506121f782826131a0565b600086815260086020526040902055895181908b908890811061221657fe5b6020908102919091010152505060019093019250612131915050565b508682101561226d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906148d2565b600480546006546040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169263f242432a92611f569230928b9289910161441c565b60005460ff1661233a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690554281101561239c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614d45565b8351600060608267ffffffffffffffff811180156123b957600080fd5b506040519080825280602002602001820160405280156123e3578160200160208202803683370190505b50905060608367ffffffffffffffff811180156123ff57600080fd5b50604051908082528060200260200182016040528015612429578160200160208202803683370190505b50905060608467ffffffffffffffff8111801561244557600080fd5b5060405190808252806020026020018201604052801561246f578160200160208202803683370190505b50905061247b89613295565b905060005b858110156127db5760008a828151811061249657fe5b6020026020010151905060008a83815181106124ae57fe5b6020026020010151905060008a84815181106124c657fe5b602002602001015111612505576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614578565b6000811161253f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614e5c565b60045474010000000000000000000000000000000000000000900460ff161561259e5760065482141561259e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614da2565b60008281526007602052604090205480156127145760008381526008602052604081205486519091908790879081106125d357fe5b602002602001015190506000806126056125f68588611af790919063ffffffff16565b61260085896131a0565b613217565b91509150818f898151811061261657fe5b60200260200101511015612656576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a93565b6126608483611b87565b6000888152600860205260409020556126798c83611b87565b9b508361269c866115308461268f576000612692565b60015b869060ff166131a0565b816126a357fe5b048b89815181106126b057fe5b602002602001018181525050818a89815181106126c957fe5b6020026020010181815250506126fb8b89815181106126e457fe5b602002602001015186611b8790919063ffffffff16565b600088815260076020526040902055506127d092505050565b60008b858151811061272257fe5b60200260200101519050633b9aca0081101561276a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614a36565b60008481526008602052604090208190556127858982611b87565b6000858152600760205260409020829055885190995081908990879081106127a957fe5b602002602001018181525050808786815181106127c257fe5b602002602001018181525050505b505050600101612480565b506127f78a8a856040518060200160405280600081525061357d565b60045460065460405173ffffffffffffffffffffffffffffffffffffffff9092169163f242432a918d913091908990612854907fc8c323f9000000000000000000000000000000000000000000000000000000009060200161454b565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401612883959493929190614373565b600060405180830381600087803b15801561289d57600080fd5b505af11580156128b1573d6000803e3d6000fd5b505050508973ffffffffffffffffffffffffffffffffffffffff167f403f9dc4582dae52d3eeb4a22d37540ffb13c32d964c92ec5ac0d3d5628da3168a8a856040516128ff93929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555050505050505050565b60005460ff166129af57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055428111612a10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614b73565b8451600060608267ffffffffffffffff81118015612a2d57600080fd5b50604051908082528060200260200182016040528015612a57578160200160208202803683370190505b50905060608367ffffffffffffffff81118015612a7357600080fd5b50604051908082528060200260200182016040528015612a9d578160200160208202803683370190505b50905060608467ffffffffffffffff81118015612ab957600080fd5b50604051908082528060200260200182016040528015612ae3578160200160208202803683370190505b509050612aef8a613295565b905060005b85811015612cee5760008b8281518110612b0a57fe5b6020026020010151905060008b8381518110612b2257fe5b602002602001015190506000848481518110612b3a57fe5b6020026020010151905060006007600085815260200190815260200160002054905060008111612b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610167906145d5565b6000848152600860205260408120549082612bb18684611af7565b81612bb857fe5b049050600083612bc88787611af7565b81612bcf57fe5b0490508f8881518110612bde57fe5b6020026020010151821015612c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614c8a565b8e8881518110612c2b57fe5b6020026020010151811015612c6c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614dff565b612c7684876131a0565b600088815260076020526040902055612c8f83836131a0565b600088815260086020526040902055612ca88c83611b87565b9b50808b8981518110612cb757fe5b602002602001018181525050818a8981518110612cd057fe5b6020908102919091010152505060019095019450612af49350505050565b50612cfa308b8b6137b2565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a308d600654886040518563ffffffff1660e01b8152600401612d5d949392919061441c565b600060405180830381600087803b158015612d7757600080fd5b505af1158015612d8b573d6000803e3d6000fd5b50506003546040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169250632eb2c2d69150612deb9030908f908f90899060040161430e565b600060405180830381600087803b158015612e0557600080fd5b505af1158015612e19573d6000803e3d6000fd5b505050508a73ffffffffffffffffffffffffffffffffffffffff167f711e9bcb94b4cf7bc99c1cb938edc75ac7e85a136838e90abf6ee1f5adebd4238b8585604051612e6793929190614507565b60405180910390a25050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320858452909152902054612ee290826131a0565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152600160208181526040808420888552825280842095909555928716825282528281208582529091522054612f339082611b87565b73ffffffffffffffffffffffffffffffffffffffff8085166000818152600160209081526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b612fce8573ffffffffffffffffffffffffffffffffffffffff1661325e565b15611aef5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561308757818101518382015260200161306f565b50505050905090810190601f1680156130b45780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156130d757600080fd5b5087f11580156130eb573d6000803e3d6000fd5b50505050506040513d602081101561310257600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611aed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180615303603a913960400191505060405180910390fd5b60008282111561321157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008082848161322357fe5b06156132455761323e600184868161323757fe5b0490611b87565b6001613252565b82848161324e57fe5b0460005b915091505b9250929050565b6000813f8015801590611b8057507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b8051606090600181141561338957604080516001808252818301909252606091602080830190803683375050600354865192935073ffffffffffffffffffffffffffffffffffffffff169162fdd58e9150309087906000906132f357fe5b60200260200101516040518363ffffffff1660e01b8152600401613318929190614461565b60206040518083038186803b15801561333057600080fd5b505afa158015613344573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133689190614270565b8160008151811061337557fe5b602090810291909101015291506104199050565b60608167ffffffffffffffff811180156133a257600080fd5b506040519080825280602002602001820160405280156133cc578160200160208202803683370190505b50905030816000815181106133dd57fe5b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015260015b828110156134a95784818151811061341957fe5b602002602001015185600183038151811061343057fe5b60200260200101511061346f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016790614930565b3082828151811061347c57fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101613405565b506003546040517f4e1273f400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690634e1273f4906135029084908890600401614487565b60006040518083038186803b15801561351a57600080fd5b505afa15801561352e573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135749190810190613f3c565b92505050610419565b81518351146135d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152946030913960400191505060405180910390fd5b825160005b818110156136a1576136488482815181106135f357fe5b6020026020010151600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008885815181106116fa57fe5b73ffffffffffffffffffffffffffffffffffffffff87166000908152600160205260408120875190919088908590811061367e57fe5b6020908102919091018101518252810191909152604001600020556001016135dc565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561374f578181015183820152602001613737565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561378e578181015183820152602001613776565b5050505090500194505050505060405180910390a461067760008686865a87611880565b81518151811461380d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806152096030913960400191505060405180910390fd5b60005b818110156138d55761387c83828151811061382757fe5b6020026020010151600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061162157fe5b73ffffffffffffffffffffffffffffffffffffffff8616600090815260016020526040812086519091908790859081106138b257fe5b602090810291909101810151825281019190915260400160002055600101613810565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561398357818101518382015260200161396b565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156139c25781810151838201526020016139aa565b5050505090500194505050505060405180910390a450505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600081525090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b604051806040016040528060608152602001600081525090565b60405180606001604052806060815260200160608152602001600081525090565b8051610419816150fb565b60008083601f840112613aa9578081fd5b50813567ffffffffffffffff811115613ac0578182fd5b602083019150836020808302850101111561325757600080fd5b600082601f830112613aea578081fd5b8135613afd613af8826150dd565b6150b9565b818152915060208083019084810181840286018201871015613b1e57600080fd5b60005b84811015613b3d57813584529282019290820190600101613b21565b505050505092915050565b600082601f830112613b58578081fd5b8151613b66613af8826150dd565b818152915060208083019084810181840286018201871015613b8757600080fd5b60005b84811015613b3d57815184529282019290820190600101613b8a565b600082601f830112613bb6578081fd5b813567ffffffffffffffff811115613bca57fe5b613bfb60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016150b9565b9150808252836020828501011115613c1257600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215613c3d578182fd5b8235613c48816150fb565b91506020830135613c58816150fb565b809150509250929050565b600080600080600060a08688031215613c7a578081fd5b8535613c85816150fb565b94506020860135613c95816150fb565b9350604086013567ffffffffffffffff80821115613cb1578283fd5b613cbd89838a01613ada565b94506060880135915080821115613cd2578283fd5b613cde89838a01613ada565b93506080880135915080821115613cf3578283fd5b50613d0088828901613ba6565b9150509295509295909350565b600080600080600060a08688031215613d24578081fd5b8535613d2f816150fb565b94506020860135613d3f816150fb565b93506040860135925060608601359150608086013567ffffffffffffffff811115613d68578182fd5b613d0088828901613ba6565b60008060408385031215613d86578182fd5b8235613d91816150fb565b915060208301358015158114613c58578182fd5b60008060408385031215613db7578182fd5b8235613dc2816150fb565b946020939093013593505050565b60008060408385031215613de2578182fd5b823567ffffffffffffffff80821115613df9578384fd5b818501915085601f830112613e0c578384fd5b8135613e1a613af8826150dd565b80828252602080830192508086018a828387028901011115613e3a578889fd5b8896505b84871015613e65578035613e51816150fb565b845260019690960195928101928101613e3e565b509096508701359350505080821115613e7c578283fd5b50613e8985828601613ada565b9150509250929050565b60008060208385031215613ea5578182fd5b823567ffffffffffffffff811115613ebb578283fd5b613ec785828601613a98565b90969095509350505050565b60008060008060408587031215613ee8578182fd5b843567ffffffffffffffff80821115613eff578384fd5b613f0b88838901613a98565b90965094506020870135915080821115613f23578384fd5b50613f3087828801613a98565b95989497509550505050565b600060208284031215613f4d578081fd5b815167ffffffffffffffff811115613f63578182fd5b613f6f84828501613b48565b949350505050565b600060208284031215613f88578081fd5b8135611b8081615120565b600060208284031215613fa4578081fd5b8151611b8081615120565b60008060408385031215613fc1578182fd5b8251613fcc81615120565b602084015190925067ffffffffffffffff80821115613fe9578283fd5b9084019060408287031215613ffc578283fd5b60405160408101818110838211171561401157fe5b604052825182811115614022578485fd5b61402e88828601613b48565b825250602083015160208201528093505050509250929050565b6000806040838503121561405a578182fd5b825161406581615120565b602084015190925067ffffffffffffffff80821115614082578283fd5b9084019060808287031215614095578283fd5b6040516080810181811083821117156140aa57fe5b6040526140b683613a8d565b81526020830151828111156140c9578485fd5b6140d588828601613b48565b6020830152506040830151828111156140ec578485fd5b6140f888828601613b48565b604083015250606083015160608201528093505050509250929050565b60008060408385031215614127578182fd5b825161413281615120565b602084015190925067ffffffffffffffff8082111561414f578283fd5b9084019060608287031215614162578283fd5b60405160608101818110838211171561417757fe5b604052825182811115614188578485fd5b61419488828601613b48565b8252506020830151828111156141a8578485fd5b6141b488828601613b48565b602083015250604083015160408201528093505050509250929050565b60008082840360808112156141e4578283fd5b83516141ef81615120565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215614220578182fd5b506040516060810181811067ffffffffffffffff8211171561423e57fe5b604052602084015161424f816150fb565b81526040848101516020830152606090940151938101939093525092909150565b600060208284031215614281578081fd5b5051919050565b60008060006060848603121561429c578081fd5b505081359360208301359350604090920135919050565b6000815180845260208085019450808401835b838110156142e2578151875295820195908201906001016142c6565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060a0604083015261434760a08301856142b3565b828103606084015261435981856142b3565b838103608090940193909352508152602001949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835260208188168185015286604085015285606085015260a06080850152845191508160a0850152825b828110156143d35785810182015185820160c0015281016143b7565b828111156143e4578360c084870101525b5050601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160c0019695505050505050565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b604080825283519082018190526000906020906060840190828701845b828110156144d657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016144a4565b505050838103828501526144ea81866142b3565b9695505050505050565b600060208252611b8060208301846142b3565b60006060825261451a60608301866142b3565b828103602084015261452c81866142b3565b905082810360408401526144ea81856142b3565b901515815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f4d41585f43555252454e43590000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a204e554c4c5f544f54414c5f4c49515549444954590000000000000000606082015260800190565b60208082526035908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944000000606082015260800190565b60208082526043908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e5f5452414e5346455260608201527f5245440000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526045908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f4944535f4160608201527f4d4f554e54000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526042908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f4445504f53495460608201527f4544000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e908201527f63793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526044908201527f4e696674797377617045786368616e6765235f676574546f6b656e526573657260408201527f7665733a20554e534f525445445f4f525f4455504c49434154455f544f4b454e60608201527f5f49445300000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526044908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f544f4b454e535f5452414e53464560608201527f5252454400000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20494e56414c49445f43555252454e43595f414d4f554e540000000000000000606082015260800190565b6020808252603d908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204d41585f43555252454e43595f414d4f554e545f4558434545444544000000606082015260800190565b6020808252604a908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4e494654595f544f4b454e535f5460608201527f52414e5346455252454400000000000000000000000000000000000000000000608082015260a00190565b60208082526035908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20444541444c494e455f45584345454445440000000000000000000000606082015260800190565b60208082526024908201527f4e696674797377617045786368616e67653a554e535550504f525445445f4d4560408201527f54484f4400000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252603f908201527f4e696674797377617045786368616e6765236f6e45524331313535526563656960408201527f7665643a20494e56414c49445f4f4e52454345495645445f4d45535341474500606082015260800190565b602080825260409082018190527f4e696674797377617045786368616e6765235f72656d6f76654c697175696469908201527f74793a20494e53554646494349454e545f43555252454e43595f414d4f554e54606082015260800190565b60208082526036908201527f4e696674797377617045786368616e6765235f63757272656e6379546f546f6b60408201527f656e3a204e554c4c5f544f4b454e535f424f5547485400000000000000000000606082015260800190565b60208082526032908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f20444541444c494e455f45584345454445440000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f2043555252454e43595f504f4f4c5f464f5242494444454e0000000000000000606082015260800190565b60208082526037908201527f4e696674797377617045786368616e6765235f72656d6f76654c69717569646960408201527f74793a20494e53554646494349454e545f544f4b454e53000000000000000000606082015260800190565b60208082526033908201527f4e696674797377617045786368616e6765235f6164644c69717569646974793a60408201527f204e554c4c5f544f4b454e535f414d4f554e5400000000000000000000000000606082015260800190565b60208082526034908201527f4e696674797377617045786368616e6765235f746f6b656e546f43757272656e60408201527f63793a204e554c4c5f544f4b454e535f534f4c44000000000000000000000000606082015260800190565b6020808252602c908201527f4e696674797377617045786368616e67652367657442757950726963653a204560408201527f4d5054595f524553455256450000000000000000000000000000000000000000606082015260800190565b6020808252602d908201527f4e696674797377617045786368616e67652367657453656c6c50726963653a2060408201527f454d5054595f5245534552564500000000000000000000000000000000000000606082015260800190565b60208082526038908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f4d4554484f440000000000000000606082015260800190565b60208082526046908201527f4e696674797377617045786368616e6765236f6e45524331313535426174636860408201527f52656365697665643a20494e56414c49445f43555252454e43595f5452414e5360608201527f4645525245440000000000000000000000000000000000000000000000000000608082015260a00190565b90815260200190565b60405181810167ffffffffffffffff811182821017156150d557fe5b604052919050565b600067ffffffffffffffff8211156150f157fe5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff8116811461511d57600080fd5b50565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461511d57600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135354d696e744275726e2362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a26469706673582212200de16fc0245d81d028816ad311c89dbbc3d6e964494193026135bf9ad24f1ca264736f6c634300070400334e6966747973776170466163746f72792363726561746545786368616e67653a2045584348414e47455f414c52454144595f43524541544544a26469706673582212204efa1c0526327dd61bbeca928a86759c98b1f1180adeed153dbab24c7082a29b64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1427474C EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0x8359289C EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xEC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xEA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x124 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP2 DUP2 MSTORE SWAP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 MSTORE SWAP3 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP1 SWAP4 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP6 AND DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND ISZERO PUSH2 0x1B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5807 PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH2 0x1C6 SWAP1 PUSH2 0x2CD JUMP JUMPDEST DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH2 0x226 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP7 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP10 DUP6 MSTORE DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND SWAP6 DUP8 AND SWAP6 DUP7 OR SWAP1 SSTORE DUP1 MLOAD SWAP5 DUP6 MSTORE MLOAD SWAP5 SWAP6 POP DUP7 SWAP5 SWAP2 SWAP4 PUSH32 0x23658FA6D505B3E3034045B3937D4239CBDAA345BFB0C4A2D6637ADE8B85457C SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x552C DUP1 PUSH2 0x2DB DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x552C CODESIZE SUB DUP1 PUSH3 0x552C DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x11F JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x62 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST PUSH3 0x8A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x81 SWAP1 PUSH3 0x15F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND CALLER OR SWAP1 SWAP2 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND SWAP2 DUP5 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x4 DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP4 AND DUP3 OR SWAP1 SWAP3 SSTORE PUSH1 0x6 DUP4 SWAP1 SSTORE EQ PUSH3 0xD9 JUMPI PUSH1 0x0 PUSH3 0xDC JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x4 DUP1 SLOAD SWAP2 ISZERO ISZERO PUSH1 0x1 PUSH1 0xA0 SHL MUL PUSH1 0xFF PUSH1 0xA0 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE POP PUSH3 0x1AA SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x11A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x134 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH3 0x13F DUP5 PUSH3 0x102 JUMP JUMPDEST SWAP3 POP PUSH3 0x14F PUSH1 0x20 DUP6 ADD PUSH3 0x102 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD MLOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E676523636F6E7374727563746F723A494E PUSH1 0x40 DUP3 ADD MSTORE PUSH11 0x159053125117D253941555 PUSH1 0xAA SHL PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH2 0x5372 DUP1 PUSH3 0x1BA PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x135 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x863ED300 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xBE571468 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xF23A6E61 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x2C6 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x2D9 JUMPI DUP1 PUSH4 0xFCA16C3B EQ PUSH2 0x2EC JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0xBE571468 EQ PUSH2 0x2A0 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x2B3 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x863ED300 EQ PUSH2 0x252 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x265 JUMPI DUP1 PUSH4 0xA9C2E36C EQ PUSH2 0x278 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x280 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x2BEF5E38 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x46ADF5CA GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x46ADF5CA EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x22C JUMPI DUP1 PUSH4 0x6EE8E134 EQ PUSH2 0x23F JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH4 0x2BEF5E38 EQ PUSH2 0x1EE JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x201 JUMPI PUSH2 0x135 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x199 JUMPI DUP1 PUSH4 0x10FE9AE8 EQ PUSH2 0x1B9 JUMPI DUP1 PUSH4 0x209B96C5 EQ PUSH2 0x1CE JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4BD0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x183 PUSH2 0x17E CALLDATASIZE PUSH1 0x4 PUSH2 0x3DA5 JUMP JUMPDEST PUSH2 0x2FF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x50B0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1AC PUSH2 0x1A7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F77 JUMP JUMPDEST PUSH2 0x337 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x4540 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x41E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x42ED JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x1DC CALLDATASIZE PUSH1 0x4 PUSH2 0x3E93 JUMP JUMPDEST PUSH2 0x43A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x44F4 JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x1FC CALLDATASIZE PUSH1 0x4 PUSH2 0x3E93 JUMP JUMPDEST PUSH2 0x4DB JUMP JUMPDEST PUSH2 0x214 PUSH2 0x20F CALLDATASIZE PUSH1 0x4 PUSH2 0x3C63 JUMP JUMPDEST PUSH2 0x573 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x21E PUSH2 0x67E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x23A CALLDATASIZE PUSH1 0x4 PUSH2 0x3DD0 JUMP JUMPDEST PUSH2 0x69F JUMP JUMPDEST PUSH2 0x183 PUSH2 0x24D CALLDATASIZE PUSH1 0x4 PUSH2 0x4288 JUMP JUMPDEST PUSH2 0x7EC JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x260 CALLDATASIZE PUSH1 0x4 PUSH2 0x3ED3 JUMP JUMPDEST PUSH2 0x880 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x273 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D74 JUMP JUMPDEST PUSH2 0x9E3 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0xA7C JUMP JUMPDEST PUSH2 0x293 PUSH2 0x28E CALLDATASIZE PUSH1 0x4 PUSH2 0x3C63 JUMP JUMPDEST PUSH2 0xA98 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x190 SWAP2 SWAP1 PUSH2 0x454B JUMP JUMPDEST PUSH2 0x1E1 PUSH2 0x2AE CALLDATASIZE PUSH1 0x4 PUSH2 0x3ED3 JUMP JUMPDEST PUSH2 0x110F JUMP JUMPDEST PUSH2 0x1AC PUSH2 0x2C1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3C2B JUMP JUMPDEST PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x293 PUSH2 0x2D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D0D JUMP JUMPDEST PUSH2 0x12A2 JUMP JUMPDEST PUSH2 0x214 PUSH2 0x2E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3D0D JUMP JUMPDEST PUSH2 0x13D3 JUMP JUMPDEST PUSH2 0x183 PUSH2 0x2FA CALLDATASIZE PUSH1 0x4 PUSH2 0x4288 JUMP JUMPDEST PUSH2 0x14D7 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP5 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x3CA JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x416 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x60 DUP2 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x455 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x47F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x8 PUSH1 0x0 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x49D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4BF JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x485 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x4F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x520 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4D2 JUMPI PUSH1 0x7 PUSH1 0x0 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x53E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x560 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x526 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x59C JUMPI POP PUSH2 0x59C DUP6 CALLER PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x5F1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5265 PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x65D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51D9 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x669 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1556 JUMP JUMPDEST PUSH2 0x677 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1880 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x6FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5239 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x715 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x73F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x7E4 JUMPI PUSH1 0x1 PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x75E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x7AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7D1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x745 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP1 ISZERO PUSH2 0x7FD JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x833 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4F73 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x841 DUP6 PUSH2 0x3E3 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x84F DUP3 DUP6 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x869 DUP4 PUSH2 0x863 DUP9 PUSH2 0x3E8 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 PUSH2 0x1B87 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x874 JUMPI INVALID JUMPDEST DIV SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x8C5 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x9D8 JUMPI PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xFDD58E ADDRESS DUP12 DUP12 DUP7 DUP2 DUP2 LT PUSH2 0x900 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x924 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x93C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x950 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x974 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST SWAP1 POP PUSH2 0x9B8 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x985 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP3 PUSH1 0x8 PUSH1 0x0 DUP14 DUP14 DUP9 DUP2 DUP2 LT PUSH2 0x99D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x7EC JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9C4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x8CB JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xAAF SWAP2 SWAP1 PUSH2 0x3F93 JUMP JUMPDEST SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xB2D8104700000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xCCB JUMPI PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xB4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x502D JUMP JUMPDEST DUP5 MLOAD PUSH1 0x1 EQ PUSH2 0xB87 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x476F JUMP JUMPDEST PUSH1 0x6 SLOAD DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xB97 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD EQ PUSH2 0xBD6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x468F JUMP JUMPDEST PUSH2 0xBDE PUSH2 0x39DD JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xBF2 SWAP2 SWAP1 PUSH2 0x4048 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xC1D JUMPI DUP2 MLOAD PUSH2 0xC1F JUMP JUMPDEST DUP8 JUMPDEST SWAP1 POP PUSH1 0x60 PUSH2 0xC50 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP10 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC3D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD DUP7 PUSH2 0x1BFB JUMP JUMPDEST SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD38BC77E62E239476B3E25620D73F29A4A188E808AAD79F4A81AAF44871A7A30 DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP6 PUSH1 0x40 MLOAD PUSH2 0xCBB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP PUSH2 0x10E3 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xDB08EC9700000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xE2B JUMPI PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xD66 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x49B3 JUMP JUMPDEST PUSH2 0xD6E PUSH2 0x3A1B JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xD82 SWAP2 SWAP1 PUSH2 0x41D1 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH1 0x0 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0xDAD JUMPI DUP2 MLOAD PUSH2 0xDAF JUMP JUMPDEST DUP8 JUMPDEST SWAP1 POP PUSH1 0x60 PUSH2 0xDC8 DUP9 DUP9 DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD DUP7 PUSH2 0x1FBF JUMP JUMPDEST SWAP1 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x89E4DBDD48F69E7920342E9AD9691B9A7150F254E6A0AF177CCFD2556AAB8BCD DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD PUSH2 0xCBB SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x82DA2B7300000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xF03 JUMPI PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0xEC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x46EC JUMP JUMPDEST PUSH2 0xECE PUSH2 0x3A52 JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xEE2 SWAP2 SWAP1 PUSH2 0x3FAF JUMP JUMPDEST SWAP1 POP DUP1 SWAP2 POP POP PUSH2 0xEFD DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD PUSH2 0x22C9 JUMP JUMPDEST POP PUSH2 0x10E3 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x5C0BF25900000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xFC2 JUMPI CALLER ADDRESS EQ PUSH2 0xF86 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4AF0 JUMP JUMPDEST PUSH2 0xF8E PUSH2 0x3A6C JUMP JUMPDEST DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xFA2 SWAP2 SWAP1 PUSH2 0x4115 JUMP JUMPDEST SWAP1 POP DUP1 SWAP2 POP POP PUSH2 0xEFD DUP8 DUP8 DUP8 DUP5 PUSH1 0x0 ADD MLOAD DUP6 PUSH1 0x20 ADD MLOAD DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x293E JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xC8C323F900000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x10B1 JUMPI PUSH1 0x4 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x105D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x47F2 JUMP JUMPDEST PUSH1 0x6 SLOAD DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x106D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD EQ PUSH2 0x10AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x468F JUMP JUMPDEST PUSH2 0x10E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4FD0 JUMP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 DUP2 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x112A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1154 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x9D8 JUMPI PUSH1 0x3 SLOAD PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0xFDD58E ADDRESS DUP12 DUP12 DUP7 DUP2 DUP2 LT PUSH2 0x118F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11B3 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x11DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1203 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST SWAP1 POP PUSH2 0x1247 DUP8 DUP8 DUP5 DUP2 DUP2 LT PUSH2 0x1214 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x8 PUSH1 0x0 DUP13 DUP13 DUP8 DUP2 DUP2 LT PUSH2 0x122B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP4 PUSH2 0x14D7 JUMP JUMPDEST DUP4 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1253 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP PUSH1 0x1 ADD PUSH2 0x115A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x60 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP4 POP PUSH1 0x60 SWAP3 SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP6 DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x12F9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1313 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x132C DUP9 DUP9 DUP5 DUP5 DUP9 PUSH2 0xA98 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x13A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4C2D JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x13FC JUMPI POP PUSH2 0x13FC DUP6 CALLER PUSH2 0x1267 JUMP JUMPDEST PUSH2 0x1451 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x517A PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x14BD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x514F PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x14C9 DUP6 DUP6 DUP6 DUP6 PUSH2 0x2EA7 JUMP JUMPDEST PUSH2 0x677 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x2FAF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 GT DUP1 ISZERO PUSH2 0x14E8 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x151E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1536 PUSH2 0x3E8 PUSH2 0x1530 DUP7 DUP9 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 PUSH2 0x1AF7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x154A PUSH2 0x3E3 PUSH2 0x1530 DUP7 DUP10 PUSH2 0x31A0 JUMP JUMPDEST SWAP1 POP PUSH2 0x9D8 DUP3 DUP3 PUSH2 0x3217 JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x15B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x51A4 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1778 JUMPI PUSH2 0x1646 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x15CC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1621 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x31A0 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x167C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x171F DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x16A5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x16FA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1B87 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x1755 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x15B5 JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1825 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x180D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1864 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x184C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x189F DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x325E JUMP JUMPDEST ISZERO PUSH2 0x1AEF JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1957 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x193F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1996 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x197E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x19D2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x19BA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x19FF JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1A24 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1A38 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1A4F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1AED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x52C4 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x1B06 JUMPI POP PUSH1 0x0 PUSH2 0x331 JUMP JUMPDEST DUP3 DUP3 MUL DUP3 DUP5 DUP3 DUP2 PUSH2 0x1B13 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x1B80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236D756C3A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1B80 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x1C6F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP4 LT ISZERO PUSH2 0x1CD1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4632 JUMP JUMPDEST DUP6 MLOAD DUP5 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1CEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1D15 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1D31 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1D5B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x1D67 DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1E64 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D82 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D9A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1DB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP3 GT PUSH2 0x1DF6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4CE8 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x1E11 DUP5 DUP4 DUP6 PUSH2 0x14D7 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E1D DUP9 DUP3 PUSH2 0x31A0 JUMP JUMPDEST SWAP8 POP DUP1 DUP11 DUP8 DUP2 MLOAD DUP2 LT PUSH2 0x1E2C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH2 0x1E41 DUP3 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 SWAP6 DUP7 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP6 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP PUSH1 0x1 SWAP1 SWAP3 ADD SWAP2 POP PUSH2 0x1D6C SWAP1 POP JUMP JUMPDEST POP DUP2 ISZERO PUSH2 0x1EFA JUMPI PUSH1 0x4 DUP1 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xF242432A SWAP3 PUSH2 0x1EC7 SWAP3 ADDRESS SWAP3 DUP12 SWAP3 DUP10 SWAP2 ADD PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EF5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x2EB2C2D6 SWAP1 PUSH2 0x1F56 SWAP1 ADDRESS SWAP1 DUP10 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x430E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1F84 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x60 SWAP1 PUSH1 0xFF AND PUSH2 0x2033 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE DUP6 MLOAD TIMESTAMP DUP5 LT ISZERO PUSH2 0x2097 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4875 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x20B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x20DA JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x20F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2120 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x212C DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2232 JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2147 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x215F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2177 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP3 GT PUSH2 0x21BB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4EB9 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 PUSH2 0x21DF DUP5 PUSH2 0x21D9 DUP6 DUP3 PUSH2 0x31A0 JUMP JUMPDEST DUP5 PUSH2 0x7EC JUMP JUMPDEST SWAP1 POP PUSH2 0x21EB DUP9 DUP3 PUSH2 0x1B87 JUMP JUMPDEST SWAP8 POP PUSH2 0x21F7 DUP3 DUP3 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE DUP10 MLOAD DUP2 SWAP1 DUP12 SWAP1 DUP9 SWAP1 DUP2 LT PUSH2 0x2216 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 SWAP1 SWAP4 ADD SWAP3 POP PUSH2 0x2131 SWAP2 POP POP JUMP JUMPDEST POP DUP7 DUP3 LT ISZERO PUSH2 0x226D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x48D2 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP3 PUSH4 0xF242432A SWAP3 PUSH2 0x1F56 SWAP3 ADDRESS SWAP3 DUP12 SWAP3 DUP10 SWAP2 ADD PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x233A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP2 LT ISZERO PUSH2 0x239C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4D45 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x23B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x23E3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x23FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2429 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2445 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x246F JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x247B DUP10 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x27DB JUMPI PUSH1 0x0 DUP11 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2496 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x24AE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x24C6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT PUSH2 0x2505 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4578 JUMP JUMPDEST PUSH1 0x0 DUP2 GT PUSH2 0x253F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4E5C JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH2 0x259E JUMPI PUSH1 0x6 SLOAD DUP3 EQ ISZERO PUSH2 0x259E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4DA2 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x2714 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x25D3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP1 PUSH2 0x2605 PUSH2 0x25F6 DUP6 DUP9 PUSH2 0x1AF7 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x2600 DUP6 DUP10 PUSH2 0x31A0 JUMP JUMPDEST PUSH2 0x3217 JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP2 DUP16 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2616 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x2656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4A93 JUMP JUMPDEST PUSH2 0x2660 DUP5 DUP4 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2679 DUP13 DUP4 PUSH2 0x1B87 JUMP JUMPDEST SWAP12 POP DUP4 PUSH2 0x269C DUP7 PUSH2 0x1530 DUP5 PUSH2 0x268F JUMPI PUSH1 0x0 PUSH2 0x2692 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP7 SWAP1 PUSH1 0xFF AND PUSH2 0x31A0 JUMP JUMPDEST DUP2 PUSH2 0x26A3 JUMPI INVALID JUMPDEST DIV DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26B0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26C9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH2 0x26FB DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x26E4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP7 PUSH2 0x1B87 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE POP PUSH2 0x27D0 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP12 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x2722 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH4 0x3B9ACA00 DUP2 LT ISZERO PUSH2 0x276A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4A36 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP2 SWAP1 SSTORE PUSH2 0x2785 DUP10 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE DUP9 MLOAD SWAP1 SWAP10 POP DUP2 SWAP1 DUP10 SWAP1 DUP8 SWAP1 DUP2 LT PUSH2 0x27A9 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP1 DUP8 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x27C2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0x2480 JUMP JUMPDEST POP PUSH2 0x27F7 DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x357D JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x6 SLOAD PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0xF242432A SWAP2 DUP14 SWAP2 ADDRESS SWAP2 SWAP1 DUP10 SWAP1 PUSH2 0x2854 SWAP1 PUSH32 0xC8C323F900000000000000000000000000000000000000000000000000000000 SWAP1 PUSH1 0x20 ADD PUSH2 0x454B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2883 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4373 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x289D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x28B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x403F9DC4582DAE52D3EEB4A22D37540FFB13C32D964C92EC5AC0D3D5628DA316 DUP11 DUP11 DUP6 PUSH1 0x40 MLOAD PUSH2 0x28FF SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0xFF AND PUSH2 0x29AF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x5265656E7472616E637947756172643A207265656E7472616E742063616C6C00 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND SWAP1 SSTORE TIMESTAMP DUP2 GT PUSH2 0x2A10 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4B73 JUMP JUMPDEST DUP5 MLOAD PUSH1 0x0 PUSH1 0x60 DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2A2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2A57 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP4 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2A73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2A9D JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x60 DUP5 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x2AB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2AE3 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x2AEF DUP11 PUSH2 0x3295 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x2CEE JUMPI PUSH1 0x0 DUP12 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2B0A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2B22 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x2B3A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x7 PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP2 GT PUSH2 0x2B96 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP1 DUP3 PUSH2 0x2BB1 DUP7 DUP5 PUSH2 0x1AF7 JUMP JUMPDEST DUP2 PUSH2 0x2BB8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP4 PUSH2 0x2BC8 DUP8 DUP8 PUSH2 0x1AF7 JUMP JUMPDEST DUP2 PUSH2 0x2BCF JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP16 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x2BDE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 LT ISZERO PUSH2 0x2C1F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4C8A JUMP JUMPDEST DUP15 DUP9 DUP2 MLOAD DUP2 LT PUSH2 0x2C2B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 LT ISZERO PUSH2 0x2C6C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4DFF JUMP JUMPDEST PUSH2 0x2C76 DUP5 DUP8 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2C8F DUP4 DUP4 PUSH2 0x31A0 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x2CA8 DUP13 DUP4 PUSH2 0x1B87 JUMP JUMPDEST SWAP12 POP DUP1 DUP12 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2CB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP DUP2 DUP11 DUP10 DUP2 MLOAD DUP2 LT PUSH2 0x2CD0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 SWAP1 SWAP6 ADD SWAP5 POP PUSH2 0x2AF4 SWAP4 POP POP POP POP JUMP JUMPDEST POP PUSH2 0x2CFA ADDRESS DUP12 DUP12 PUSH2 0x37B2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF242432A ADDRESS DUP14 PUSH1 0x6 SLOAD DUP9 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2D5D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x441C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D77 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D8B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP3 POP PUSH4 0x2EB2C2D6 SWAP2 POP PUSH2 0x2DEB SWAP1 ADDRESS SWAP1 DUP16 SWAP1 DUP16 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x430E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E19 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x711E9BCB94B4CF7BC99C1CB938EDC75AC7E85A136838E90ABF6EE1F5ADEBD423 DUP12 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH2 0x2E67 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4507 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2EE2 SWAP1 DUP3 PUSH2 0x31A0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP9 DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP3 DUP8 AND DUP3 MSTORE DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x2F33 SWAP1 DUP3 PUSH2 0x1B87 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x2FCE DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x325E JUMP JUMPDEST ISZERO PUSH2 0x1AEF JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3087 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x306F JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x30B4 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x30D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x30EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3102 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1AED JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5303 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x3211 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 DUP2 PUSH2 0x3223 JUMPI INVALID JUMPDEST MOD ISZERO PUSH2 0x3245 JUMPI PUSH2 0x323E PUSH1 0x1 DUP5 DUP7 DUP2 PUSH2 0x3237 JUMPI INVALID JUMPDEST DIV SWAP1 PUSH2 0x1B87 JUMP JUMPDEST PUSH1 0x1 PUSH2 0x3252 JUMP JUMPDEST DUP3 DUP5 DUP2 PUSH2 0x324E JUMPI INVALID JUMPDEST DIV PUSH1 0x0 JUMPDEST SWAP2 POP SWAP2 POP JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1B80 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x60 SWAP1 PUSH1 0x1 DUP2 EQ ISZERO PUSH2 0x3389 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x3 SLOAD DUP7 MLOAD SWAP3 SWAP4 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 PUSH3 0xFDD58E SWAP2 POP ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x32F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3318 SWAP3 SWAP2 SWAP1 PUSH2 0x4461 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3330 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3344 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3368 SWAP2 SWAP1 PUSH2 0x4270 JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x3375 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP2 POP PUSH2 0x419 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x33A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x33CC JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP ADDRESS DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x33DD JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x34A9 JUMPI DUP5 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x3419 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3430 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT PUSH2 0x346F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x167 SWAP1 PUSH2 0x4930 JUMP JUMPDEST ADDRESS DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x347C JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x3405 JUMP JUMPDEST POP PUSH1 0x3 SLOAD PUSH1 0x40 MLOAD PUSH32 0x4E1273F400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 PUSH4 0x4E1273F4 SWAP1 PUSH2 0x3502 SWAP1 DUP5 SWAP1 DUP9 SWAP1 PUSH1 0x4 ADD PUSH2 0x4487 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x351A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x352E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x3574 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x3F3C JUMP JUMPDEST SWAP3 POP POP POP PUSH2 0x419 JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x35D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5294 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x36A1 JUMPI PUSH2 0x3648 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x35F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x16FA JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP8 MLOAD SWAP1 SWAP2 SWAP1 DUP9 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x367E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x35DC JUMP JUMPDEST POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x374F JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3737 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x378E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3776 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x677 PUSH1 0x0 DUP7 DUP7 DUP7 GAS DUP8 PUSH2 0x1880 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x380D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x5209 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x38D5 JUMPI PUSH2 0x387C DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x3827 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH1 0x0 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1621 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP7 MLOAD SWAP1 SWAP2 SWAP1 DUP8 SWAP1 DUP6 SWAP1 DUP2 LT PUSH2 0x38B2 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x3810 JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3983 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x396B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x39C2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x39AA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x419 DUP2 PUSH2 0x50FB JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x3AA9 JUMPI DUP1 DUP2 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3AC0 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x3257 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3AEA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3AFD PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST PUSH2 0x50B9 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3B1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3B3D JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3B21 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3B58 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x3B66 PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x3B87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x3B3D JUMPI DUP2 MLOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x3B8A JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3BB6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3BCA JUMPI INVALID JUMPDEST PUSH2 0x3BFB PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x50B9 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x3C12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3C3D JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3C48 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3C58 DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3C7A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3C85 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3C95 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3CB1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3CBD DUP10 DUP4 DUP11 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CD2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3CDE DUP10 DUP4 DUP11 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3CF3 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3D00 DUP9 DUP3 DUP10 ADD PUSH2 0x3BA6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3D24 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3D2F DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3D3F DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3D68 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3D00 DUP9 DUP3 DUP10 ADD PUSH2 0x3BA6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3D86 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3D91 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3C58 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DB7 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3DC2 DUP2 PUSH2 0x50FB JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3DE2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3DF9 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x3E0C JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x3E1A PUSH2 0x3AF8 DUP3 PUSH2 0x50DD JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x3E3A JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x3E65 JUMPI DUP1 CALLDATALOAD PUSH2 0x3E51 DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x3E3E JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x3E7C JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3E89 DUP6 DUP3 DUP7 ADD PUSH2 0x3ADA JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3EA5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3EBB JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x3EC7 DUP6 DUP3 DUP7 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3EE8 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3EFF JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x3F0B DUP9 DUP4 DUP10 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3F23 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0x3F30 DUP8 DUP3 DUP9 ADD PUSH2 0x3A98 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F4D JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3F63 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3F6F DUP5 DUP3 DUP6 ADD PUSH2 0x3B48 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F88 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1B80 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3FA4 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1B80 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FC1 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x3FCC DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3FE9 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x40 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x3FFC JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x4011 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x4022 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x402E DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x405A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4065 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x4082 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x80 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x4095 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x40AA JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x40B6 DUP4 PUSH2 0x3A8D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x40C9 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x40D5 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x40EC JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x40F8 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4127 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4132 DUP2 PUSH2 0x5120 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x414F JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x60 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x4162 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x4177 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP3 MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x4188 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x4194 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST DUP3 MSTORE POP PUSH1 0x20 DUP4 ADD MLOAD DUP3 DUP2 GT ISZERO PUSH2 0x41A8 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x41B4 DUP9 DUP3 DUP7 ADD PUSH2 0x3B48 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x41E4 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x41EF DUP2 PUSH2 0x5120 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD SLT ISZERO PUSH2 0x4220 JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x423E JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH2 0x424F DUP2 PUSH2 0x50FB JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 DUP2 ADD MLOAD PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 SWAP1 SWAP5 ADD MLOAD SWAP4 DUP2 ADD SWAP4 SWAP1 SWAP4 MSTORE POP SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4281 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x429C JUMPI DUP1 DUP2 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x42E2 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x42C6 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x4347 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x42B3 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x4359 DUP2 DUP6 PUSH2 0x42B3 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND DUP4 MSTORE PUSH1 0x20 DUP2 DUP9 AND DUP2 DUP6 ADD MSTORE DUP7 PUSH1 0x40 DUP6 ADD MSTORE DUP6 PUSH1 0x60 DUP6 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP6 ADD MSTORE DUP5 MLOAD SWAP2 POP DUP2 PUSH1 0xA0 DUP6 ADD MSTORE DUP3 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x43D3 JUMPI DUP6 DUP2 ADD DUP3 ADD MLOAD DUP6 DUP3 ADD PUSH1 0xC0 ADD MSTORE DUP2 ADD PUSH2 0x43B7 JUMP JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x43E4 JUMPI DUP4 PUSH1 0xC0 DUP5 DUP8 ADD ADD MSTORE JUMPDEST POP POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0xC0 ADD SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x44D6 JUMPI DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x44A4 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE PUSH2 0x44EA DUP2 DUP7 PUSH2 0x42B3 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0x1B80 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x42B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0x451A PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x42B3 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x452C DUP2 DUP7 PUSH2 0x42B3 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x40 DUP5 ADD MSTORE PUSH2 0x44EA DUP2 DUP6 PUSH2 0x42B3 JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204E554C4C5F4D41585F43555252454E43590000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A204E554C4C5F544F54414C5F4C49515549444954590000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F63757272656E6379546F546F6B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656E3A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F4944000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x43 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E5F5452414E53464552 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5245440000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x45 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F4944535F41 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4D4F554E54000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x42 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E535F4445504F534954 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4544000000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x63793A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x40 SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E SWAP1 DUP3 ADD MSTORE PUSH32 0x63793A20494E53554646494349454E545F43555252454E43595F414D4F554E54 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x44 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F676574546F6B656E5265736572 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7665733A20554E534F525445445F4F525F4455504C49434154455F544F4B454E PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5F49445300000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x44 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F544F4B454E535F5452414E534645 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x5252454400000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x20494E56414C49445F43555252454E43595F414D4F554E540000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204D41585F43555252454E43595F414D4F554E545F4558434545444544000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x4A SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F4E494654595F544F4B454E535F54 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x52414E5346455252454400000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x35 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A20444541444C494E455F45584345454445440000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67653A554E535550504F525445445F4D45 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x54484F4400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3F SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135355265636569 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7665643A20494E56414C49445F4F4E52454345495645445F4D45535341474500 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x40 SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 SWAP1 DUP3 ADD MSTORE PUSH32 0x74793A20494E53554646494349454E545F43555252454E43595F414D4F554E54 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x36 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F63757272656E6379546F546F6B PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656E3A204E554C4C5F544F4B454E535F424F5547485400000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x20444541444C494E455F45584345454445440000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x2043555252454E43595F504F4F4C5F464F5242494444454E0000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x37 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F72656D6F76654C697175696469 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x74793A20494E53554646494349454E545F544F4B454E53000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F6164644C69717569646974793A PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x204E554C4C5F544F4B454E535F414D4F554E5400000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765235F746F6B656E546F43757272656E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x63793A204E554C4C5F544F4B454E535F534F4C44000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67652367657442757950726963653A2045 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4D5054595F524553455256450000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E67652367657453656C6C50726963653A20 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x454D5054595F5245534552564500000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F4D4554484F440000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x46 SWAP1 DUP3 ADD MSTORE PUSH32 0x4E696674797377617045786368616E6765236F6E455243313135354261746368 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x52656365697665643A20494E56414C49445F43555252454E43595F5452414E53 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4645525245440000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x50D5 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x50F1 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x511D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x511D JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x68427572 PUSH15 0x3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x684D696E PUSH21 0x3A20494E56414C49445F4152524159535F4C454E47 SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD 0xE1 PUSH16 0xC0245D81D028816AD311C89DBBC3D6E9 PUSH5 0x4941930261 CALLDATALOAD 0xBF SWAP11 0xD2 0x4F SHR LOG2 PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER 0x4E PUSH10 0x66747973776170466163 PUSH21 0x6F72792363726561746545786368616E67653A2045 PC NUMBER 0x48 COINBASE 0x4E SELFBALANCE GASLIMIT 0x5F COINBASE 0x4C MSTORE GASLIMIT COINBASE DIFFICULTY MSIZE 0x5F NUMBER MSTORE GASLIMIT COINBASE SLOAD GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4E STATICCALL SHR SDIV 0x26 ORIGIN PUSH30 0xD61BBECA928A86759C98B1F1180ADEED153DBAB24C7082A29B64736F6C63 NUMBER STOP SMOD DIV STOP CALLER ",
              "sourceMap": "144:1325:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;399:100;;;;;;;;;;;;;;;;-1:-1:-1;399:100:1;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;891:575;;;;;;;;;;;;;;;;-1:-1:-1;891:575:1;;;;;;;;;;;;;;;;;;:::i;:::-;;399:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;891:575::-;1001:64;:24;;;1061:3;1001:24;;;;;;;;;;;:35;;;;;;;;;;:48;;;;;;;;;;:64;993:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1170:26;1221:6;1229:9;1240:11;1199:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1301:24:1;;;;:16;:24;;;;;;;;;;;:35;;;;;;;;;;;;:48;;;;;;;;;:68;;;;;;;;;;;;1399:62;;;;;;1301:68;;-1:-1:-1;1301:48:1;;:35;;1399:62;;;;;;;;;;;891:575;;;;:::o;-1:-1:-1:-;;;;;;;;:::o"
            },
            "methodIdentifiers": {
              "createExchange(address,address,uint256)": "8359289c",
              "tokensToExchange(address,address,uint256)": "1427474c"
            }
          }
        }
      },
      "contracts/interfaces/INiftyswapExchange.sol": {
        "INiftyswapExchange": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "buyer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokensSoldIds",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokensSoldAmounts",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "currencyBoughtAmounts",
                  "type": "uint256[]"
                }
              ],
              "name": "CurrencyPurchase",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "provider",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokenAmounts",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "currencyAmounts",
                  "type": "uint256[]"
                }
              ],
              "name": "LiquidityAdded",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "provider",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokenIds",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokenAmounts",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "currencyAmounts",
                  "type": "uint256[]"
                }
              ],
              "name": "LiquidityRemoved",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "buyer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "recipient",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokensBoughtIds",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "tokensBoughtAmounts",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "currencySoldAmounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TokensPurchase",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_assetBoughtAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_assetSoldReserve",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_assetBoughtReserve",
                  "type": "uint256"
                }
              ],
              "name": "getBuyPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCurrencyInfo",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "getCurrencyReserves",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getFactoryAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_tokensBought",
                  "type": "uint256[]"
                }
              ],
              "name": "getPrice_currencyToToken",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_tokensSold",
                  "type": "uint256[]"
                }
              ],
              "name": "getPrice_tokenToCurrency",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_assetSoldAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_assetSoldReserve",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_assetBoughtReserve",
                  "type": "uint256"
                }
              ],
              "name": "getSellPrice",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTokenAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "getTotalSupply",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "getBuyPrice(uint256,uint256,uint256)": "fca16c3b",
              "getCurrencyInfo()": "46adf5ca",
              "getCurrencyReserves(uint256[])": "209b96c5",
              "getFactoryAddress()": "a9c2e36c",
              "getPrice_currencyToToken(uint256[],uint256[])": "be571468",
              "getPrice_tokenToCurrency(uint256[],uint256[])": "863ed300",
              "getSellPrice(uint256,uint256,uint256)": "6ee8e134",
              "getTokenAddress()": "10fe9ae8",
              "getTotalSupply(uint256[])": "2bef5e38",
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61"
            }
          }
        }
      },
      "contracts/interfaces/INiftyswapFactory.sol": {
        "INiftyswapFactory": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "currency",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "currencyID",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "exchange",
                  "type": "address"
                }
              ],
              "name": "NewExchange",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_currency",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_currencyID",
                  "type": "uint256"
                }
              ],
              "name": "createExchange",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_currency",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_currencyID",
                  "type": "uint256"
                }
              ],
              "name": "tokensToExchange",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "createExchange(address,address,uint256)": "8359289c",
              "tokensToExchange(address,address,uint256)": "1427474c"
            }
          }
        }
      },
      "contracts/mocks/ERC1155Mock.sol": {
        "ERC1155Mock": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_uri",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "batchMintMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "burnMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "mintMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50612319806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c8063a22cb46511610081578063d7a0ad901161005b578063d7a0ad90146101f8578063e985e9c51461020b578063f242432a1461021e576100d3565b8063a22cb465146101bf578063a3f091f5146101d2578063bd7a6c41146101e5576100d3565b80632eb2c2d6116100b25780632eb2c2d614610177578063437ecbe91461018c5780634e1273f41461019f576100d3565b8062fdd58e1461010e57806301ffc9a7146101375780630e89341c14610157575b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101059061204d565b60405180910390fd5b61012161011c366004611dc6565b610231565b60405161012e91906120aa565b60405180910390f35b61014a610145366004611f35565b610264565b60405161012e9190611fd1565b61016a610165366004611f75565b610277565b60405161012e9190611fdc565b61018a610185366004611b7d565b6103ca565b005b61018a61019a366004611def565b6104d5565b6101b26101ad366004611e74565b6104e5565b60405161012e9190611f8d565b61018a6101cd366004611d8c565b610631565b61018a6101e0366004611e21565b6106ca565b61018a6101f3366004611c86565b6106dc565b61018a610206366004611cf7565b6106e7565b61014a610219366004611b4b565b6106f3565b61018a61022c366004611c23565b61072e565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b600061026f82610832565b90505b919050565b606060026102848361088f565b60405160200180838054600181600116156101000203166002900480156102e25780601f106102c05761010080835404028352918201916102e2565b820191906000526020600020905b8154815290600101906020018083116102ce575b5050825160208401908083835b6020831061032c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016102ef565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790527f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe50181526005909201905295945050505050565b3373ffffffffffffffffffffffffffffffffffffffff861614806103f357506103f385336106f3565b610448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061220c602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806121806030913960400191505060405180910390fd5b6104c0858585856109bb565b6104ce858585855a86610d0f565b5050505050565b6104e0838383610f86565b505050565b60608151835114610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806121e0602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561055b57600080fd5b50604051908082528060200260200182016040528015610585578160200160208202803683370190505b50905060005b8451811015610629576000808683815181106105a357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106105f357fe5b602002602001015181526020019081526020016000205482828151811061061657fe5b602090810291909101015260010161058b565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d684848484611031565b50505050565b6104e08383836110e6565b6106d684848484611326565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff86161480610757575061075785336106f3565b6107ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612121602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806120f6602b913960400191505060405180910390fd5b61082485858585611570565b6104ce858585855a86611673565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000141561088657506001610272565b61026f82611864565b6060816108d0575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610272565b818060005b82156108e957600101600a830492506108d5565b60608167ffffffffffffffff8111801561090257600080fd5b506040519080825280601f01601f19166020018201604052801561092d576020820181803683370190505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b83156109b157600a840660300160f81b8282806001900393508151811061097757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350610954565b5095945050505050565b8051825114610a15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061214b6035913960400191505060405180910390fd5b815160005b81811015610c0757610aaa838281518110610a3157fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610a8557fe5b60200260200101518152602001908152602001600020546118c190919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610af657fe5b6020026020010151815260200190815260200160002081905550610b98838281518110610b1f57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610b7357fe5b602002602001015181526020019081526020016000205461193890919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610be457fe5b602090810291909101810151825281019190915260400160002055600101610a1a565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610cb4578181015183820152602001610c9c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610cf3578181015183820152602001610cdb565b5050505090500194505050505060405180910390a45050505050565b610d2e8573ffffffffffffffffffffffffffffffffffffffff166119b3565b15610f7e5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610de6578181015183820152602001610dce565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610e25578181015183820152602001610e0d565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015610e61578181015183820152602001610e49565b50505050905090810190601f168015610e8e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015610eb357600080fd5b5087f1158015610ec7573d6000803e3d6000fd5b50505050506040513d6020811015610ede57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f81526020018061226b603f913960400191505060405180910390fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152902054610fbf90826118c1565b73ffffffffffffffffffffffffffffffffffffffff841660008181526020818152604080832087845282528083209490945583518681529081018590528351919333927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4505050565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020818152604080832086845290915290205461106a9083611938565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46106d660008585855a86611673565b815181518114611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806121b06030913960400191505060405180910390fd5b60005b8181101561121e576111af83828151811061115b57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610a8557fe5b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106111fb57fe5b602090810291909101810151825281019190915260400160002055600101611144565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156112cc5781810151838201526020016112b4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561130b5781810151838201526020016112f3565b5050505090500194505050505060405180910390a450505050565b8151835114611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061223b6030913960400191505060405180910390fd5b825160005b8181101561145f576113f084828151811061139c57fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888581518110610b7357fe5b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087848151811061143c57fe5b602090810291909101810151825281019190915260400160002055600101611385565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561150d5781810151838201526020016114f5565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561154c578181015183820152602001611534565b5050505090500194505050505060405180910390a46104ce60008686865a87610d0f565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546115a990826118c1565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546115f99082611938565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6116928573ffffffffffffffffffffffffffffffffffffffff166119b3565b15610f7e5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561174b578181015183820152602001611733565b50505050905090810190601f1680156117785780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561179b57600080fd5b5087f11580156117af573d6000803e3d6000fd5b50505050506040513d60208110156117c657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806122aa603a913960400191505060405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156118b857506001610272565b61026f826119ea565b60008282111561193257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000828201838110156119ac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f80158015906119ac57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461027257600080fd5b600082601f830112611a68578081fd5b8135611a7b611a76826120d7565b6120b3565b818152915060208083019084810181840286018201871015611a9c57600080fd5b60005b84811015611abb57813584529282019290820190600101611a9f565b505050505092915050565b600082601f830112611ad6578081fd5b813567ffffffffffffffff811115611aea57fe5b611b1b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016120b3565b9150808252836020828501011115611b3257600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611b5d578182fd5b611b6683611a34565b9150611b7460208401611a34565b90509250929050565b600080600080600060a08688031215611b94578081fd5b611b9d86611a34565b9450611bab60208701611a34565b9350604086013567ffffffffffffffff80821115611bc7578283fd5b611bd389838a01611a58565b94506060880135915080821115611be8578283fd5b611bf489838a01611a58565b93506080880135915080821115611c09578283fd5b50611c1688828901611ac6565b9150509295509295909350565b600080600080600060a08688031215611c3a578081fd5b611c4386611a34565b9450611c5160208701611a34565b93506040860135925060608601359150608086013567ffffffffffffffff811115611c7a578182fd5b611c1688828901611ac6565b600080600060608486031215611c9a578283fd5b611ca384611a34565b9250602084013567ffffffffffffffff80821115611cbf578384fd5b611ccb87838801611a58565b93506040860135915080821115611ce0578283fd5b50611ced86828701611a58565b9150509250925092565b60008060008060808587031215611d0c578384fd5b611d1585611a34565b9350602085013567ffffffffffffffff80821115611d31578485fd5b611d3d88838901611a58565b94506040870135915080821115611d52578384fd5b611d5e88838901611a58565b93506060870135915080821115611d73578283fd5b50611d8087828801611ac6565b91505092959194509250565b60008060408385031215611d9e578182fd5b611da783611a34565b915060208301358015158114611dbb578182fd5b809150509250929050565b60008060408385031215611dd8578182fd5b611de183611a34565b946020939093013593505050565b600080600060608486031215611e03578283fd5b611e0c84611a34565b95602085013595506040909401359392505050565b60008060008060808587031215611e36578384fd5b611e3f85611a34565b93506020850135925060408501359150606085013567ffffffffffffffff811115611e68578182fd5b611d8087828801611ac6565b60008060408385031215611e86578081fd5b823567ffffffffffffffff80821115611e9d578283fd5b818501915085601f830112611eb0578283fd5b8135611ebe611a76826120d7565b80828252602080830192508086018a828387028901011115611ede578788fd5b8796505b84871015611f0757611ef381611a34565b845260019690960195928101928101611ee2565b509096508701359350505080821115611f1e578283fd5b50611f2b85828601611a58565b9150509250929050565b600060208284031215611f46578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119ac578182fd5b600060208284031215611f86578081fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015611fc557835183529284019291840191600101611fa9565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b8181101561200857858101830151858201604001528201611fec565b818111156120195783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526027908201527f455243313135354d6574614d696e744275726e4d6f636b3a20494e56414c494460408201527f5f4d4554484f4400000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff811182821017156120cf57fe5b604052919050565b600067ffffffffffffffff8211156120eb57fe5b506020908102019056fe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135354d696e744275726e2362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a26469706673582212203bcc901ab1be95a81e32219a4f5e4657d92daf3512032ef882d8b706ad25d6e564736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2319 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD7A0AD90 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD7A0AD90 EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x21E JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xA3F091F5 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xBD7A6C41 EQ PUSH2 0x1E5 JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x437ECBE9 EQ PUSH2 0x18C JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x19F JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x157 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x105 SWAP1 PUSH2 0x204D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x121 PUSH2 0x11C CALLDATASIZE PUSH1 0x4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH2 0x231 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x20AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14A PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F35 JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1FD1 JUMP JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F75 JUMP JUMPDEST PUSH2 0x277 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1FDC JUMP JUMPDEST PUSH2 0x18A PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B7D JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x18A PUSH2 0x19A CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEF JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1B2 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x1E74 JUMP JUMPDEST PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1F8D JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x1D8C JUMP JUMPDEST PUSH2 0x631 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C86 JUMP JUMPDEST PUSH2 0x6DC JUMP JUMPDEST PUSH2 0x18A PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CF7 JUMP JUMPDEST PUSH2 0x6E7 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B4B JUMP JUMPDEST PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0x1C23 JUMP JUMPDEST PUSH2 0x72E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26F DUP3 PUSH2 0x832 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH2 0x284 DUP4 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2E2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2C0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2E2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2CE JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2EF JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x2E6A736F6E000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 ADD DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP3 ADD SWAP1 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x3F3 JUMPI POP PUSH2 0x3F3 DUP6 CALLER PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x448 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x220C PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x4B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2180 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4C0 DUP6 DUP6 DUP6 DUP6 PUSH2 0x9BB JUMP JUMPDEST PUSH2 0x4CE DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xD0F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4E0 DUP4 DUP4 DUP4 PUSH2 0xF86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x541 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x21E0 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x585 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x629 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5A3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x616 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x58B JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1031 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x4E0 DUP4 DUP4 DUP4 PUSH2 0x10E6 JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1326 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x757 JUMPI POP PUSH2 0x757 DUP6 CALLER PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x7AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2121 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x818 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x20F6 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x824 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1570 JUMP JUMPDEST PUSH2 0x4CE DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1673 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x886 JUMPI POP PUSH1 0x1 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x1864 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x8D0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x272 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x0 JUMPDEST DUP3 ISZERO PUSH2 0x8E9 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP4 DIV SWAP3 POP PUSH2 0x8D5 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x9B1 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x977 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x954 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0xA15 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x214B PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xC07 JUMPI PUSH2 0xAAA DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA31 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x18C1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xAF6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xB98 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB1F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB73 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1938 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xBE4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xA1A JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCB4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC9C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCF3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCDB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD2E DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19B3 JUMP JUMPDEST ISZERO PUSH2 0xF7E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDE6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDCE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE25 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE0D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE61 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE49 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE8E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0xEC7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xF7C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x226B PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xFBF SWAP1 DUP3 PUSH2 0x18C1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD SWAP2 SWAP4 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x106A SWAP1 DUP4 PUSH2 0x1938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP8 DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x6D6 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1673 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1141 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x21B0 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x121E JUMPI PUSH2 0x11AF DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x115B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x11FB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1144 JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12CC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12B4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x130B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12F3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x1380 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x223B PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x145F JUMPI PUSH2 0x13F0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x139C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB73 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x143C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1385 JUMP JUMPDEST POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x150D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14F5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x154C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1534 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x4CE PUSH1 0x0 DUP7 DUP7 DUP7 GAS DUP8 PUSH2 0xD0F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x15A9 SWAP1 DUP3 PUSH2 0x18C1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x15F9 SWAP1 DUP3 PUSH2 0x1938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1692 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19B3 JUMP JUMPDEST ISZERO PUSH2 0xF7E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x174B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1733 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1778 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x179B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x17AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xF7C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x22AA PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x18B8 JUMPI POP PUSH1 0x1 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x19EA JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1932 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x19AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x19AC JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A68 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1A7B PUSH2 0x1A76 DUP3 PUSH2 0x20D7 JUMP JUMPDEST PUSH2 0x20B3 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1A9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1ABB JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1A9F JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1AD6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AEA JUMPI INVALID JUMPDEST PUSH2 0x1B1B PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x20B3 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1B32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B5D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1B66 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP2 POP PUSH2 0x1B74 PUSH1 0x20 DUP5 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1B94 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1B9D DUP7 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 POP PUSH2 0x1BAB PUSH1 0x20 DUP8 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1BC7 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1BD3 DUP10 DUP4 DUP11 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1BE8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1BF4 DUP10 DUP4 DUP11 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1C09 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1C16 DUP9 DUP3 DUP10 ADD PUSH2 0x1AC6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1C3A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C43 DUP7 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 POP PUSH2 0x1C51 PUSH1 0x20 DUP8 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C7A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1C16 DUP9 DUP3 DUP10 ADD PUSH2 0x1AC6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1C9A JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1CA3 DUP5 PUSH2 0x1A34 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1CBF JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1CCB DUP8 DUP4 DUP9 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1CE0 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1CED DUP7 DUP3 DUP8 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1D0C JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1D15 DUP6 PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1D31 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1D3D DUP9 DUP4 DUP10 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D52 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1D5E DUP9 DUP4 DUP10 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D73 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1D80 DUP8 DUP3 DUP9 ADD PUSH2 0x1AC6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D9E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1DA7 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1DBB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1DD8 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1DE1 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E03 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1E0C DUP5 PUSH2 0x1A34 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1E36 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1E3F DUP6 PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E68 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1D80 DUP8 DUP3 DUP9 ADD PUSH2 0x1AC6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E86 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1E9D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EB0 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1EBE PUSH2 0x1A76 DUP3 PUSH2 0x20D7 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x1EDE JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x1F07 JUMPI PUSH2 0x1EF3 DUP2 PUSH2 0x1A34 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x1EE2 JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x1F1E JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1F2B DUP6 DUP3 DUP7 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F46 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x19AC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F86 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1FC5 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1FA9 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2008 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1FEC JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2019 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D6574614D696E744275726E4D6F636B3A20494E56414C4944 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x5F4D4554484F4400000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x20CF JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x20EB JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x68427572 PUSH15 0x3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x684D696E PUSH21 0x3A20494E56414C49445F4152524159535F4C454E47 SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE 0xCC SWAP1 BYTE 0xB1 0xBE SWAP6 0xA8 0x1E ORIGIN 0x21 SWAP11 0x4F 0x5E CHAINID JUMPI 0xD9 0x2D 0xAF CALLDATALOAD SLT SUB 0x2E 0xF8 DUP3 0xD8 0xB7 MOD 0xAD 0x25 0xD6 0xE5 PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "169:48:4:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:10936:33",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:33",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "65:147:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "75:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "97:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "84:20:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "75:5:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "190:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "199:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "202:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "192:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "192:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "192:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "126:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "137:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "144:42:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "133:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "133:54:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "123:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "123:65:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "116:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "116:73:33"
                              },
                              "nodeType": "YulIf",
                              "src": "113:2:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "44:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "55:5:33",
                            "type": ""
                          }
                        ],
                        "src": "14:198:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "287:622:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "336:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "345:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "352:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "338:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "338:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "338:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "315:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "323:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "311:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "311:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "330:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "307:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "307:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "300:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "300:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "297:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "369:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "396:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "383:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "383:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "373:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "412:78:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "482:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "436:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "436:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "421:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "421:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "412:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "499:16:33",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "510:5:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "503:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "531:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "538:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "524:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "524:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "524:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "554:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "564:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "558:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "577:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "588:5:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "595:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "584:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "584:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "577:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "607:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "622:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "630:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "618:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "618:15:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "611:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "692:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "701:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "704:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "694:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "694:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "694:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "656:6:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "668:6:33"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "676:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "664:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "664:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "652:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "652:28:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "682:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "648:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "648:37:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "687:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "645:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "645:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "642:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "717:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "726:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "721:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "785:118:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "806:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "824:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "811:12:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "811:17:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "799:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "799:30:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "799:30:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "842:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "853:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "858:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "849:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "849:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "842:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "874:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "885:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "890:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "881:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "881:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "874:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "747:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "750:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "744:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "744:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "758:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "760:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "769:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "772:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "765:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "765:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "760:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "740:3:33",
                                "statements": []
                              },
                              "src": "736:167:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "261:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "269:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "277:5:33",
                            "type": ""
                          }
                        ],
                        "src": "217:692:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "968:526:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1017:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1026:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1033:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1019:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1019:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1019:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "996:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1004:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "992:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "992:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1011:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "988:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "988:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "981:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "981:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "978:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1050:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1077:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1064:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1064:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1054:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1127:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "1129:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1129:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1129:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1099:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1107:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1096:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1096:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1093:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1149:126:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1185:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1193:4:33",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1181:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1181:17:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1200:66:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1177:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1177:90:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1269:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1173:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1173:101:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1158:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1158:117:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1149:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1291:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1298:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1284:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1284:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1284:21:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1357:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1366:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1369:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1359:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1359:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1359:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1328:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1336:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1324:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1324:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1345:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1320:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1320:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1352:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1317:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1317:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1314:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "1399:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1406:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1395:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1395:16:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1417:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1425:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1413:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1413:17:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1432:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1382:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1382:57:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1382:57:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "1463:5:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1470:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1459:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1459:18:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1479:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1455:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1455:29:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1486:1:33",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1448:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1448:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1448:40:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "942:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "950:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "958:5:33",
                            "type": ""
                          }
                        ],
                        "src": "914:580:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1586:187:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1632:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1641:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1649:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1634:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1634:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1634:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1607:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1616:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1603:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1603:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1628:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1599:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1599:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1596:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1667:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1698:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1667:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1717:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1752:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1763:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1748:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1748:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1727:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1727:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1717:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1544:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1555:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1567:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1575:6:33",
                            "type": ""
                          }
                        ],
                        "src": "1499:274:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1975:804:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2022:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2031:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2039:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2024:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2024:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2024:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1996:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2005:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1992:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1992:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2017:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1988:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1988:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1985:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2057:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2088:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2067:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2067:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2057:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2107:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2142:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2153:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2138:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2138:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2117:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2117:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2107:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2166:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2197:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2208:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2193:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2193:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2180:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2180:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2170:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2221:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2231:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2225:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2276:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2285:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2293:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2278:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2278:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2278:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2264:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2272:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2261:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2261:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2258:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2311:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2360:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2371:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2356:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2356:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2380:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2321:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2321:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2311:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2397:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2430:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2441:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2426:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2426:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2413:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2413:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2401:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2474:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2483:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2491:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2476:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2476:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2476:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2460:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2470:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2457:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2457:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2454:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2509:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2558:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2569:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2554:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2554:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2580:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2519:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2519:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2509:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2597:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2630:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2641:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2626:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2626:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2613:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2613:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2601:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2675:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2684:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2692:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2677:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2677:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2677:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2661:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2671:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2658:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2658:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2655:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2710:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2743:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2754:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2739:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2739:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2765:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "2720:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2720:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2710:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1909:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1920:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1932:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1940:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1948:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1956:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1964:6:33",
                            "type": ""
                          }
                        ],
                        "src": "1778:1001:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2931:485:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2978:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2987:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2995:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2980:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2980:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2980:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2952:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2961:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2948:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2948:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2973:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2944:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2944:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2941:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3013:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3044:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3023:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3023:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3013:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3063:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3098:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3109:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3094:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3094:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3073:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3073:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3063:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3122:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3149:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3160:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3145:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3145:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3132:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3132:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3122:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3173:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3200:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3211:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3196:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3196:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3183:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3183:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3173:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3224:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3255:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3266:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3251:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3251:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3238:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3238:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3228:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3314:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3323:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3331:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3316:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3316:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3316:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3286:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3294:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3283:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3280:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3349:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3382:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3393:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3378:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3378:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3402:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3359:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3359:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3349:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2865:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2876:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2888:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2896:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2904:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2912:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2920:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2784:632:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3575:559:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3621:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3630:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3638:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3623:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3623:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3623:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3596:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3605:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3592:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3592:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3617:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3588:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3588:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3585:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3656:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3687:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3666:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3666:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3656:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3706:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3737:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3748:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3733:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3733:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3720:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3720:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3710:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3761:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3771:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3765:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3816:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3825:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3833:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3818:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3818:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3818:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3804:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3812:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3801:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3801:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3798:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3851:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3900:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3911:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3896:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3896:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3920:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "3861:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3861:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3851:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3937:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3970:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3981:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3966:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3966:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3953:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3953:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3941:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4014:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4023:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4031:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4016:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4016:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4016:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4000:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4010:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3997:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3997:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3994:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4049:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4098:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4109:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4094:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4094:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4120:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4059:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4059:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4049:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3525:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3536:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3548:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3556:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3564:6:33",
                            "type": ""
                          }
                        ],
                        "src": "3421:713:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4319:744:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4366:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4375:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4383:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4368:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4368:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4368:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4340:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4349:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4336:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4336:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4361:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4332:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4332:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4329:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4401:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4432:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4411:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4411:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4401:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4451:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4482:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4493:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4478:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4478:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4465:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4465:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4455:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4506:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4516:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4510:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4561:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4570:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4578:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4563:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4563:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4563:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4549:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4557:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4546:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4546:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4543:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4596:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4645:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4656:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4641:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4641:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4665:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4606:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4606:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4596:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4682:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4715:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4726:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4711:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4711:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4698:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4698:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4686:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4759:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4768:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4776:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4761:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4761:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4761:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4745:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4755:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4742:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4742:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4739:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4794:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4843:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4854:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4839:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4839:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4865:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4804:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4804:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4794:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4882:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4915:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4926:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4911:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4911:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4898:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4898:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4886:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4959:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4968:6:33"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4976:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4961:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4961:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4961:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4945:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4955:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4942:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4942:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4939:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4994:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5027:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5038:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5023:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5023:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5049:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5004:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5004:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4994:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4261:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4272:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4284:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4292:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4300:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4308:6:33",
                            "type": ""
                          }
                        ],
                        "src": "4139:924:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5152:285:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5198:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5207:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5215:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5200:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5200:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5173:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5182:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5169:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5169:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5194:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5165:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5165:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5162:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5233:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5264:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5243:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5243:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5233:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5283:45:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5313:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5324:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5309:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5309:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5296:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5296:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5287:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5381:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5390:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5398:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5383:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5383:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5383:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5350:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "5371:5:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "5364:6:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5364:13:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "5357:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5357:21:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5347:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5347:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5340:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5340:40:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5337:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5416:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5426:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5416:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5110:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5121:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5133:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5141:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5068:369:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5529:179:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5575:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5584:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5592:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5577:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5577:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5577:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5550:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5559:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5546:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5546:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5571:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5542:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5542:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5539:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5610:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5641:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5620:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5620:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5610:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5660:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5687:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5698:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5683:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5683:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5670:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5670:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5660:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5487:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5498:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5510:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5518:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5442:266:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5817:230:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5863:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5872:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5880:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5865:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5865:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5865:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5838:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5847:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5834:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5834:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5859:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5830:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5830:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5827:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5898:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5929:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5908:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5908:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5898:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5948:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5975:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5986:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5971:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5971:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5958:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5958:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5948:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5999:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6026:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6037:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6022:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6022:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6009:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6009:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5999:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5767:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5778:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5790:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5798:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5806:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5713:334:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6182:425:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6229:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6238:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6246:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6231:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6231:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6231:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6203:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6212:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6199:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6199:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6224:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6195:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6195:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6192:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6264:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6295:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6274:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6274:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6264:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6314:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6341:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6352:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6337:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6337:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6324:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6324:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6314:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6365:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6392:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6403:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6388:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6388:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6375:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6375:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6365:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6416:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6447:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6458:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6443:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6443:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6430:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6430:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6420:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6505:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6514:6:33"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6522:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6507:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6507:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6507:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6477:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6485:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6474:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6474:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6471:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6540:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6573:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6584:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6569:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6569:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6593:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6550:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6550:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6540:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6124:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6135:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6147:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6155:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6163:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6171:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6052:555:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6749:1109:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6795:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6804:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6812:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6797:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6797:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6797:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6770:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6779:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6766:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6766:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6791:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6762:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6762:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6759:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6830:37:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6857:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6844:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6844:23:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6834:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6876:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6886:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6880:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6931:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6940:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6948:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6933:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6933:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6933:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6919:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6927:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6916:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6916:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6913:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6966:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6980:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6991:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6976:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6976:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6970:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7046:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7055:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7063:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7048:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7048:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7048:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7025:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7029:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7021:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7021:13:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7036:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7017:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7017:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7010:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7010:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7007:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7081:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7108:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7095:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7095:16:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7085:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7120:80:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7192:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "7146:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7146:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "7131:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7131:69:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "7124:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7209:16:33",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "7222:3:33"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7213:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "7241:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7246:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7234:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7234:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7234:19:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7262:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7272:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "7266:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7285:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "7296:3:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7301:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7292:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7292:12:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "7285:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7313:22:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7328:2:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7332:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7324:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7324:11:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "7317:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7394:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7403:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7411:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7396:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7396:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7396:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7358:2:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7366:6:33"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "7374:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "7362:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7362:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7354:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7354:24:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "7380:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7350:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7350:33:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7385:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7347:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7347:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7344:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7429:15:33",
                              "value": {
                                "name": "value1",
                                "nodeType": "YulIdentifier",
                                "src": "7438:6:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7433:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7502:126:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7523:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "7549:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "7528:20:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7528:25:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7516:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7516:38:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7516:38:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7567:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7578:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "7583:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7574:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7574:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "7567:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7599:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "7610:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "7615:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7606:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7606:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "7599:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7464:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7467:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7461:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7461:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7475:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7477:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7486:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7489:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7482:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7482:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7477:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7457:3:33",
                                "statements": []
                              },
                              "src": "7453:175:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7637:15:33",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "7647:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7637:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7661:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7694:9:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "7705:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7690:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7690:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7677:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7677:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7665:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7738:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7747:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7755:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7740:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7740:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7740:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7724:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7734:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7721:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7721:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7718:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7773:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7822:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7833:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7818:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7818:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7844:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "7783:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7783:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7773:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6707:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6718:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6730:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6738:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6612:1246:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7932:283:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7978:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7987:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7995:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7980:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7980:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7980:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7953:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7962:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7949:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7949:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7974:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7945:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7945:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7942:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8013:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8039:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8026:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8026:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8017:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8159:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8168:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8176:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8161:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8161:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8161:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "8071:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "8082:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8089:66:33",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8078:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8078:78:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "8068:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8068:89:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8061:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8061:97:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8058:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8194:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8204:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8194:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7898:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7909:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7921:6:33",
                            "type": ""
                          }
                        ],
                        "src": "7863:352:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8290:120:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8336:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8345:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8353:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8338:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8338:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8338:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8311:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8320:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8307:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8307:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8332:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8303:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8303:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8300:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8371:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8394:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8381:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8381:23:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8371:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8256:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8267:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8279:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8220:190:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8566:484:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8576:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8586:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8580:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8597:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8615:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8626:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8611:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8611:18:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8601:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8645:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8656:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8638:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8638:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8638:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8668:17:33",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "8679:6:33"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "8672:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8694:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8714:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8708:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8708:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "8698:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8737:6:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8745:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8730:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8730:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8730:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8761:25:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8772:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8783:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8768:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8768:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "8761:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8795:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8813:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8821:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8809:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8809:15:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8799:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8833:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "8842:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "8837:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8904:120:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "8925:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "8936:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "8930:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8930:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "8918:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8918:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8918:26:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8957:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "8968:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "8973:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8964:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8964:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "8957:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8989:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "9003:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9011:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8999:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8999:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8989:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "8866:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8869:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8863:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8863:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "8877:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8879:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "8888:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8891:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8884:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8884:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "8879:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "8859:3:33",
                                "statements": []
                              },
                              "src": "8855:169:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9033:11:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "9041:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9033:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8535:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8546:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8557:4:33",
                            "type": ""
                          }
                        ],
                        "src": "8415:635:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9150:92:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9160:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9172:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9183:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9168:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9168:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9160:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9202:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "9227:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "9220:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9220:14:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "9213:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9213:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9195:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9195:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9195:41:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9119:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9130:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9141:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9055:187:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9368:541:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9378:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9388:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9382:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9406:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9417:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9399:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9399:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9399:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9429:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9449:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9443:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9443:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "9433:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9476:9:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9487:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9472:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9472:18:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9492:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9465:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9465:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9465:34:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9508:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "9517:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "9512:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9580:90:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9609:9:33"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9620:1:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9605:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9605:17:33"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9624:2:33",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9601:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9601:26:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "9643:6:33"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "9651:1:33"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9639:3:33"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "9639:14:33"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9655:2:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9635:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9635:23:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9629:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9629:30:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9594:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9594:66:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9594:66:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9541:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9544:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9538:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9538:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9552:19:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9554:15:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "9563:1:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9566:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9559:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9559:10:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "9554:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9534:3:33",
                                "statements": []
                              },
                              "src": "9530:140:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9704:69:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9733:9:33"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9744:6:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9729:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9729:22:33"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9753:2:33",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9725:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9725:31:33"
                                        },
                                        {
                                          "name": "tail",
                                          "nodeType": "YulIdentifier",
                                          "src": "9758:4:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9718:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9718:45:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9718:45:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9685:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9688:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9682:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9682:13:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9679:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9782:121:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9798:9:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "9817:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9825:2:33",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "9813:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9813:15:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9830:66:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "9809:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9809:88:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9794:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9794:104:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9900:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9790:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9790:113:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9782:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9337:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9348:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9359:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9247:662:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10088:229:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10105:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10116:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10098:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10098:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10098:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10139:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10150:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10135:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10135:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10155:2:33",
                                    "type": "",
                                    "value": "39"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10128:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10128:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10128:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10178:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10189:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10174:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10174:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10194:34:33",
                                    "type": "",
                                    "value": "ERC1155MetaMintBurnMock: INVALID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10167:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10167:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10167:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10249:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10260:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10245:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10245:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10265:9:33",
                                    "type": "",
                                    "value": "_METHOD"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10238:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10238:37:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10238:37:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10284:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10296:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10307:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10292:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10292:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10284:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a14409389543c5be2d3a34f066f3d8b4d59db7d4a318cfe221527e5c604f065c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10065:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10079:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9914:403:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10423:76:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10433:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10445:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10456:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10441:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10441:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10433:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10475:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10486:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10468:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10468:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10468:25:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10392:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10403:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10414:4:33",
                            "type": ""
                          }
                        ],
                        "src": "10322:177:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10548:198:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10558:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10574:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10568:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10568:9:33"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "10558:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10586:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10608:6:33"
                                  },
                                  {
                                    "name": "size",
                                    "nodeType": "YulIdentifier",
                                    "src": "10616:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10604:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10604:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10590:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10696:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "10698:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10698:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10698:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10639:10:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10651:18:33",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10636:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10636:34:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10675:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10687:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10672:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10672:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "10633:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10633:62:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10630:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10725:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10729:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10718:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10718:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10718:22:33"
                            }
                          ]
                        },
                        "name": "allocateMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "10528:4:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "10537:6:33",
                            "type": ""
                          }
                        ],
                        "src": "10504:242:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10826:108:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10870:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "10872:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10872:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10872:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10842:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10850:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10839:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10839:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10836:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10892:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "10908:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10916:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "10904:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10904:17:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10923:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10900:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10900:28:33"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "10892:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_t_array$_t_address_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10806:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "10817:4:33",
                            "type": ""
                          }
                        ],
                        "src": "10751:183:33"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_t_array$_t_uint256_$dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst := array\n        mstore(array, length)\n        let _1 := 0x20\n        dst := add(array, _1)\n        let src := add(offset, _1)\n        if gt(add(add(offset, mul(length, _1)), _1), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n    }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        array := allocateMemory(add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20))\n        mstore(array, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array, length), 0x20), 0)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value1, value1) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value1, value1) }\n        let length := calldataload(_2)\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _3 := 0x20\n        dst := add(dst, _3)\n        let src := add(_2, _3)\n        if gt(add(add(_2, mul(length, _3)), _3), dataEnd) { revert(value1, value1) }\n        let i := value1\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_t_address(src))\n            dst := add(dst, _3)\n            src := add(src, _3)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _3))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := tail\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), tail)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_encode_tuple_t_stringliteral_a14409389543c5be2d3a34f066f3d8b4d59db7d4a318cfe221527e5c604f065c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"ERC1155MetaMintBurnMock: INVALID\")\n        mstore(add(headStart, 96), \"_METHOD\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_array$_t_address_$dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(mul(length, 0x20), 0x20)\n    }\n}",
                  "id": 33,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100d35760003560e01c8063a22cb46511610081578063d7a0ad901161005b578063d7a0ad90146101f8578063e985e9c51461020b578063f242432a1461021e576100d3565b8063a22cb465146101bf578063a3f091f5146101d2578063bd7a6c41146101e5576100d3565b80632eb2c2d6116100b25780632eb2c2d614610177578063437ecbe91461018c5780634e1273f41461019f576100d3565b8062fdd58e1461010e57806301ffc9a7146101375780630e89341c14610157575b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101059061204d565b60405180910390fd5b61012161011c366004611dc6565b610231565b60405161012e91906120aa565b60405180910390f35b61014a610145366004611f35565b610264565b60405161012e9190611fd1565b61016a610165366004611f75565b610277565b60405161012e9190611fdc565b61018a610185366004611b7d565b6103ca565b005b61018a61019a366004611def565b6104d5565b6101b26101ad366004611e74565b6104e5565b60405161012e9190611f8d565b61018a6101cd366004611d8c565b610631565b61018a6101e0366004611e21565b6106ca565b61018a6101f3366004611c86565b6106dc565b61018a610206366004611cf7565b6106e7565b61014a610219366004611b4b565b6106f3565b61018a61022c366004611c23565b61072e565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b600061026f82610832565b90505b919050565b606060026102848361088f565b60405160200180838054600181600116156101000203166002900480156102e25780601f106102c05761010080835404028352918201916102e2565b820191906000526020600020905b8154815290600101906020018083116102ce575b5050825160208401908083835b6020831061032c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016102ef565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790527f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe50181526005909201905295945050505050565b3373ffffffffffffffffffffffffffffffffffffffff861614806103f357506103f385336106f3565b610448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061220c602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806121806030913960400191505060405180910390fd5b6104c0858585856109bb565b6104ce858585855a86610d0f565b5050505050565b6104e0838383610f86565b505050565b60608151835114610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806121e0602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561055b57600080fd5b50604051908082528060200260200182016040528015610585578160200160208202803683370190505b50905060005b8451811015610629576000808683815181106105a357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106105f357fe5b602002602001015181526020019081526020016000205482828151811061061657fe5b602090810291909101015260010161058b565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d684848484611031565b50505050565b6104e08383836110e6565b6106d684848484611326565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff86161480610757575061075785336106f3565b6107ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612121602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806120f6602b913960400191505060405180910390fd5b61082485858585611570565b6104ce858585855a86611673565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000141561088657506001610272565b61026f82611864565b6060816108d0575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610272565b818060005b82156108e957600101600a830492506108d5565b60608167ffffffffffffffff8111801561090257600080fd5b506040519080825280601f01601f19166020018201604052801561092d576020820181803683370190505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b83156109b157600a840660300160f81b8282806001900393508151811061097757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350610954565b5095945050505050565b8051825114610a15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061214b6035913960400191505060405180910390fd5b815160005b81811015610c0757610aaa838281518110610a3157fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610a8557fe5b60200260200101518152602001908152602001600020546118c190919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610af657fe5b6020026020010151815260200190815260200160002081905550610b98838281518110610b1f57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610b7357fe5b602002602001015181526020019081526020016000205461193890919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610be457fe5b602090810291909101810151825281019190915260400160002055600101610a1a565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610cb4578181015183820152602001610c9c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610cf3578181015183820152602001610cdb565b5050505090500194505050505060405180910390a45050505050565b610d2e8573ffffffffffffffffffffffffffffffffffffffff166119b3565b15610f7e5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610de6578181015183820152602001610dce565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610e25578181015183820152602001610e0d565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015610e61578181015183820152602001610e49565b50505050905090810190601f168015610e8e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015610eb357600080fd5b5087f1158015610ec7573d6000803e3d6000fd5b50505050506040513d6020811015610ede57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f81526020018061226b603f913960400191505060405180910390fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152902054610fbf90826118c1565b73ffffffffffffffffffffffffffffffffffffffff841660008181526020818152604080832087845282528083209490945583518681529081018590528351919333927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4505050565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020818152604080832086845290915290205461106a9083611938565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46106d660008585855a86611673565b815181518114611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806121b06030913960400191505060405180910390fd5b60005b8181101561121e576111af83828151811061115b57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610a8557fe5b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106111fb57fe5b602090810291909101810151825281019190915260400160002055600101611144565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156112cc5781810151838201526020016112b4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561130b5781810151838201526020016112f3565b5050505090500194505050505060405180910390a450505050565b8151835114611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061223b6030913960400191505060405180910390fd5b825160005b8181101561145f576113f084828151811061139c57fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888581518110610b7357fe5b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087848151811061143c57fe5b602090810291909101810151825281019190915260400160002055600101611385565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561150d5781810151838201526020016114f5565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561154c578181015183820152602001611534565b5050505090500194505050505060405180910390a46104ce60008686865a87610d0f565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546115a990826118c1565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546115f99082611938565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6116928573ffffffffffffffffffffffffffffffffffffffff166119b3565b15610f7e5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561174b578181015183820152602001611733565b50505050905090810190601f1680156117785780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561179b57600080fd5b5087f11580156117af573d6000803e3d6000fd5b50505050506040513d60208110156117c657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806122aa603a913960400191505060405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156118b857506001610272565b61026f826119ea565b60008282111561193257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000828201838110156119ac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f80158015906119ac57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461027257600080fd5b600082601f830112611a68578081fd5b8135611a7b611a76826120d7565b6120b3565b818152915060208083019084810181840286018201871015611a9c57600080fd5b60005b84811015611abb57813584529282019290820190600101611a9f565b505050505092915050565b600082601f830112611ad6578081fd5b813567ffffffffffffffff811115611aea57fe5b611b1b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016120b3565b9150808252836020828501011115611b3257600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611b5d578182fd5b611b6683611a34565b9150611b7460208401611a34565b90509250929050565b600080600080600060a08688031215611b94578081fd5b611b9d86611a34565b9450611bab60208701611a34565b9350604086013567ffffffffffffffff80821115611bc7578283fd5b611bd389838a01611a58565b94506060880135915080821115611be8578283fd5b611bf489838a01611a58565b93506080880135915080821115611c09578283fd5b50611c1688828901611ac6565b9150509295509295909350565b600080600080600060a08688031215611c3a578081fd5b611c4386611a34565b9450611c5160208701611a34565b93506040860135925060608601359150608086013567ffffffffffffffff811115611c7a578182fd5b611c1688828901611ac6565b600080600060608486031215611c9a578283fd5b611ca384611a34565b9250602084013567ffffffffffffffff80821115611cbf578384fd5b611ccb87838801611a58565b93506040860135915080821115611ce0578283fd5b50611ced86828701611a58565b9150509250925092565b60008060008060808587031215611d0c578384fd5b611d1585611a34565b9350602085013567ffffffffffffffff80821115611d31578485fd5b611d3d88838901611a58565b94506040870135915080821115611d52578384fd5b611d5e88838901611a58565b93506060870135915080821115611d73578283fd5b50611d8087828801611ac6565b91505092959194509250565b60008060408385031215611d9e578182fd5b611da783611a34565b915060208301358015158114611dbb578182fd5b809150509250929050565b60008060408385031215611dd8578182fd5b611de183611a34565b946020939093013593505050565b600080600060608486031215611e03578283fd5b611e0c84611a34565b95602085013595506040909401359392505050565b60008060008060808587031215611e36578384fd5b611e3f85611a34565b93506020850135925060408501359150606085013567ffffffffffffffff811115611e68578182fd5b611d8087828801611ac6565b60008060408385031215611e86578081fd5b823567ffffffffffffffff80821115611e9d578283fd5b818501915085601f830112611eb0578283fd5b8135611ebe611a76826120d7565b80828252602080830192508086018a828387028901011115611ede578788fd5b8796505b84871015611f0757611ef381611a34565b845260019690960195928101928101611ee2565b509096508701359350505080821115611f1e578283fd5b50611f2b85828601611a58565b9150509250929050565b600060208284031215611f46578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119ac578182fd5b600060208284031215611f86578081fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015611fc557835183529284019291840191600101611fa9565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b8181101561200857858101830151858201604001528201611fec565b818111156120195783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526027908201527f455243313135354d6574614d696e744275726e4d6f636b3a20494e56414c494460408201527f5f4d4554484f4400000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff811182821017156120cf57fe5b604052919050565b600067ffffffffffffffff8211156120eb57fe5b506020908102019056fe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135354d696e744275726e2362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a26469706673582212203bcc901ab1be95a81e32219a4f5e4657d92daf3512032ef882d8b706ad25d6e564736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD7A0AD90 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD7A0AD90 EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x21E JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xA3F091F5 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xBD7A6C41 EQ PUSH2 0x1E5 JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x437ECBE9 EQ PUSH2 0x18C JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x19F JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x157 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x105 SWAP1 PUSH2 0x204D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x121 PUSH2 0x11C CALLDATASIZE PUSH1 0x4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH2 0x231 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x20AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14A PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F35 JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1FD1 JUMP JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F75 JUMP JUMPDEST PUSH2 0x277 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1FDC JUMP JUMPDEST PUSH2 0x18A PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B7D JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x18A PUSH2 0x19A CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEF JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1B2 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x1E74 JUMP JUMPDEST PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1F8D JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x1D8C JUMP JUMPDEST PUSH2 0x631 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C86 JUMP JUMPDEST PUSH2 0x6DC JUMP JUMPDEST PUSH2 0x18A PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CF7 JUMP JUMPDEST PUSH2 0x6E7 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B4B JUMP JUMPDEST PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0x1C23 JUMP JUMPDEST PUSH2 0x72E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26F DUP3 PUSH2 0x832 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH2 0x284 DUP4 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2E2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2C0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2E2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2CE JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2EF JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x2E6A736F6E000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 ADD DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP3 ADD SWAP1 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x3F3 JUMPI POP PUSH2 0x3F3 DUP6 CALLER PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x448 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x220C PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x4B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2180 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4C0 DUP6 DUP6 DUP6 DUP6 PUSH2 0x9BB JUMP JUMPDEST PUSH2 0x4CE DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xD0F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4E0 DUP4 DUP4 DUP4 PUSH2 0xF86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x541 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x21E0 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x585 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x629 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5A3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x616 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x58B JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1031 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x4E0 DUP4 DUP4 DUP4 PUSH2 0x10E6 JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1326 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x757 JUMPI POP PUSH2 0x757 DUP6 CALLER PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x7AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2121 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x818 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x20F6 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x824 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1570 JUMP JUMPDEST PUSH2 0x4CE DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1673 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x886 JUMPI POP PUSH1 0x1 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x1864 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x8D0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x272 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x0 JUMPDEST DUP3 ISZERO PUSH2 0x8E9 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP4 DIV SWAP3 POP PUSH2 0x8D5 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x9B1 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x977 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x954 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0xA15 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x214B PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xC07 JUMPI PUSH2 0xAAA DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA31 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x18C1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xAF6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xB98 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB1F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB73 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1938 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xBE4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xA1A JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCB4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC9C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCF3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCDB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD2E DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19B3 JUMP JUMPDEST ISZERO PUSH2 0xF7E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDE6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDCE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE25 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE0D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE61 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE49 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE8E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0xEC7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xF7C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x226B PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xFBF SWAP1 DUP3 PUSH2 0x18C1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD SWAP2 SWAP4 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x106A SWAP1 DUP4 PUSH2 0x1938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP8 DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x6D6 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1673 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1141 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x21B0 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x121E JUMPI PUSH2 0x11AF DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x115B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x11FB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1144 JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12CC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12B4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x130B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12F3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x1380 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x223B PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x145F JUMPI PUSH2 0x13F0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x139C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB73 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x143C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1385 JUMP JUMPDEST POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x150D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14F5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x154C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1534 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x4CE PUSH1 0x0 DUP7 DUP7 DUP7 GAS DUP8 PUSH2 0xD0F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x15A9 SWAP1 DUP3 PUSH2 0x18C1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x15F9 SWAP1 DUP3 PUSH2 0x1938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1692 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19B3 JUMP JUMPDEST ISZERO PUSH2 0xF7E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x174B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1733 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1778 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x179B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x17AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xF7C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x22AA PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x18B8 JUMPI POP PUSH1 0x1 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x19EA JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1932 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x19AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x19AC JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A68 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1A7B PUSH2 0x1A76 DUP3 PUSH2 0x20D7 JUMP JUMPDEST PUSH2 0x20B3 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1A9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1ABB JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1A9F JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1AD6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AEA JUMPI INVALID JUMPDEST PUSH2 0x1B1B PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x20B3 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1B32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B5D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1B66 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP2 POP PUSH2 0x1B74 PUSH1 0x20 DUP5 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1B94 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1B9D DUP7 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 POP PUSH2 0x1BAB PUSH1 0x20 DUP8 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1BC7 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1BD3 DUP10 DUP4 DUP11 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1BE8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1BF4 DUP10 DUP4 DUP11 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1C09 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1C16 DUP9 DUP3 DUP10 ADD PUSH2 0x1AC6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1C3A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C43 DUP7 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 POP PUSH2 0x1C51 PUSH1 0x20 DUP8 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C7A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1C16 DUP9 DUP3 DUP10 ADD PUSH2 0x1AC6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1C9A JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1CA3 DUP5 PUSH2 0x1A34 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1CBF JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1CCB DUP8 DUP4 DUP9 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1CE0 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1CED DUP7 DUP3 DUP8 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1D0C JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1D15 DUP6 PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1D31 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1D3D DUP9 DUP4 DUP10 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D52 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1D5E DUP9 DUP4 DUP10 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D73 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1D80 DUP8 DUP3 DUP9 ADD PUSH2 0x1AC6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D9E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1DA7 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1DBB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1DD8 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1DE1 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E03 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1E0C DUP5 PUSH2 0x1A34 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1E36 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1E3F DUP6 PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E68 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1D80 DUP8 DUP3 DUP9 ADD PUSH2 0x1AC6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E86 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1E9D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EB0 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1EBE PUSH2 0x1A76 DUP3 PUSH2 0x20D7 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x1EDE JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x1F07 JUMPI PUSH2 0x1EF3 DUP2 PUSH2 0x1A34 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x1EE2 JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x1F1E JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1F2B DUP6 DUP3 DUP7 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F46 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x19AC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F86 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1FC5 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1FA9 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2008 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1FEC JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2019 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D6574614D696E744275726E4D6F636B3A20494E56414C4944 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x5F4D4554484F4400000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x20CF JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x20EB JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x68427572 PUSH15 0x3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x684D696E PUSH21 0x3A20494E56414C49445F4152524159535F4C454E47 SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXTCODESIZE 0xCC SWAP1 BYTE 0xB1 0xBE SWAP6 0xA8 0x1E ORIGIN 0x21 SWAP11 0x4F 0x5E CHAINID JUMPI 0xD9 0x2D 0xAF CALLDATALOAD SLT SUB 0x2E 0xF8 DUP3 0xD8 0xB7 MOD 0xAD 0x25 0xD6 0xE5 PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "169:48:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2800:49:19;;;;;;;;;;:::i;:::-;;;;;;;;7127:132:21;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;711:185:19;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;840:155:23:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2312:522:21:-;;;;;;:::i;:::-;;:::i;:::-;;2156:117:19;;;;;;:::i;:::-;;:::i;7539:495:21:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6135:230::-;;;;;;:::i;:::-;;:::i;1262:140:19:-;;;;;;:::i;:::-;;:::i;2489:149::-;;;;;;:::i;:::-;;:::i;1667:172::-;;;;;;:::i;:::-;;:::i;6627:160:21:-;;;;;;:::i;:::-;;:::i;1373:556::-;;;;;;:::i;:::-;;:::i;7127:132::-;7233:16;;;;;7209:7;7233:16;;;;;;;;;;;:21;;;;;;;;;7127:132::o;711:185:19:-;835:4;854:37;878:12;854:23;:37::i;:::-;847:44;;711:185;;;;:::o;840:155:23:-;896:13;948:15;965:14;975:3;965:9;:14::i;:::-;931:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;931:58:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;931:58:23;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;840:155:23:o;2312:522:21:-;2498:10;:19;;;;;2497:60;;;2522:35;2539:5;2546:10;2522:16;:35::i;:::-;2489:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2623:17;;;2615:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2700:50;2723:5;2730:3;2735:4;2741:8;2700:22;:50::i;:::-;2756:73;2784:5;2791:3;2796:4;2802:8;2812:9;2823:5;2756:27;:73::i;:::-;2312:522;;;;;:::o;2156:117:19:-;2237:31;2249:5;2256:3;2261:6;2237:11;:31::i;:::-;2156:117;;;:::o;7539:495:21:-;7646:16;7698:4;:11;7680:7;:14;:29;7672:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7782:30;7829:7;:14;7815:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7815:29:21;;7782:62;;7900:9;7895:108;7919:7;:14;7915:1;:18;7895:108;;;7967:8;:20;7976:7;7984:1;7976:10;;;;;;;;;;;;;;7967:20;;;;;;;;;;;;;;;:29;7988:4;7993:1;7988:7;;;;;;;;;;;;;;7967:29;;;;;;;;;;;;7948:13;7962:1;7948:16;;;;;;;;;;;;;;;;;:48;7935:3;;7895:108;;;-1:-1:-1;8016:13:21;7539:495;-1:-1:-1;;;7539:495:21:o;6135:230::-;6267:10;6257:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;6312:48;;;;;;;6257:32;;6267:10;6312:48;;;;;;;;;;;6135:230;;:::o;1262:140:19:-;1361:36;1373:3;1378;1383:6;1391:5;1361:11;:36::i;:::-;1262:140;;;;:::o;2489:149::-;2595:38;2612:5;2619:4;2625:7;2595:16;:38::i;1667:172::-;1791:43;1808:3;1813:4;1819:7;1828:5;1791:16;:43::i;6627:160:21:-;6754:17;;;;6722:15;6754:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;6627:160::o;1373:556::-;1514:10;:19;;;;;1513:60;;;1538:35;1555:5;1562:10;1538:16;:35::i;:::-;1505:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:17;;;1626:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:43;1827:5;1834:3;1839;1844:7;1809:17;:43::i;:::-;1858:66;1881:5;1888:3;1893;1898:7;1907:9;1918:5;1858:22;:66::i;2054:234:23:-;2140:4;2156:50;;;2172:34;2156:50;2152:82;;;-1:-1:-1;2223:4:23;2216:11;;2152:82;2246:37;2270:12;2246:23;:37::i;2518:513::-;2572:27;2611:7;2607:38;;-1:-1:-1;2628:10:23;;;;;;;;;;;;;;;;;;;2607:38;2663:2;;2651:9;2737:50;2744:6;;2737:50;;2760:5;;2778:2;2773:7;;;;2737:50;;;2793:17;2823:3;2813:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2813:14:23;-1:-1:-1;2793:34:23;-1:-1:-1;2845:7:23;;;2892:84;2899:7;;2892:84;;2949:2;2944;:7;2939:2;:12;2928:25;;2916:4;2921:3;;;;;;;2916:9;;;;;;;;;;;:37;;;;;;;;;;-1:-1:-1;2967:2:23;2961:8;;;;2892:84;;;-1:-1:-1;3021:4:23;2518:513;-1:-1:-1;;;;;2518:513:23:o;4452:670:21:-;4606:8;:15;4591:4;:11;:30;4583:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4743:11;;4723:17;4792:243;4816:9;4812:1;:13;4792:243;;;4915:41;4944:8;4953:1;4944:11;;;;;;;;;;;;;;4915:8;:15;4924:5;4915:15;;;;;;;;;;;;;;;:24;4931:4;4936:1;4931:7;;;;;;;;;;;;;;4915:24;;;;;;;;;;;;:28;;:41;;;;:::i;:::-;4888:8;:15;4897:5;4888:15;;;;;;;;;;;;;;;:24;4904:4;4909:1;4904:7;;;;;;;;;;;;;;4888:24;;;;;;;;;;;:68;;;;4989:39;5016:8;5025:1;5016:11;;;;;;;;;;;;;;4989:8;:13;4998:3;4989:13;;;;;;;;;;;;;;;:22;5003:4;5008:1;5003:7;;;;;;;;;;;;;;4989:22;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;4964:8;:13;4973:3;4964:13;;;;;;;;;;;;;;;:22;4978:4;4983:1;4978:7;;;;;;;;;;;;;;;;;;;4964:22;;;;;;;;;;-1:-1:-1;4964:22:21;:64;4827:3;;4792:243;;;;5097:3;5064:53;;5090:5;5064:53;;5078:10;5064:53;;;5102:4;5108:8;5064:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:670;;;;;:::o;5235:503::-;5456:16;:3;:14;;;:16::i;:::-;5452:282;;;5482:13;5520:3;5498:49;;;5553:9;5564:10;5576:5;5583:4;5589:8;5599:5;5498:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5498:107:21;;-1:-1:-1;5621:38:21;;;5631:28;5621:38;5613:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5452:282;;5235:503;;;;;;:::o;2456:257:24:-;2584:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;2609:7;2584:24;:33::i;:::-;2561:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;2647:61;;;;;;;;;;;;;2561:8;;2662:10;;2647:61;;;;;;;;;;2456:257;;;:::o;716:401::-;855:13;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:31;;878:7;855:22;:31::i;:::-;834:13;;;:8;:13;;;;;;;;;;;:18;;;;;;;;:52;;;;916:59;;;;;;;;;;;;;834:13;;:8;;931:10;;916:59;;;;;;;;1039:73;1070:3;1076;1081;1086:7;1095:9;1106:5;1039:22;:73::i;2967:552::-;3123:11;;3157:15;;3148:24;;3140:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3266:9;3261:151;3285:5;3281:1;:9;3261:151;;;3364:41;3393:8;3402:1;3393:11;;;;;;;;;;;;;;3364:8;:15;3373:5;3364:15;;;;;;;;;;;;;;;:24;3380:4;3385:1;3380:7;;;;;;;3364:41;3337:8;:15;3346:5;3337:15;;;;;;;;;;;;;;;:24;3353:4;3358:1;3353:7;;;;;;;;;;;;;;;;;;;3337:24;;;;;;;;;;-1:-1:-1;3337:24:24;:68;3292:3;;3261:151;;;;3493:3;3452:62;;3478:5;3452:62;;3466:10;3452:62;;;3499:4;3505:8;3452:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2967:552;;;;:::o;1395:716::-;1542:8;:15;1527:4;:11;:30;1519:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:11;;1651:13;1715:147;1739:5;1735:1;:9;1715:147;;;1816:39;1843:8;1852:1;1843:11;;;;;;;;;;;;;;1816:8;:13;1825:3;1816:13;;;;;;;;;;;;;;;:22;1830:4;1835:1;1830:7;;;;;;;1816:39;1791:8;:13;1800:3;1791:13;;;;;;;;;;;;;;;:22;1805:4;1810:1;1805:7;;;;;;;;;;;;;;;;;;;1791:22;;;;;;;;;;-1:-1:-1;1791:22:24;:64;1746:3;;1715:147;;;;1942:3;1902:60;;1936:3;1902:60;;1916:10;1902:60;;;1947:4;1953:8;1902:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:80;2062:3;2068;2073:4;2079:8;2089:9;2100:5;2026:27;:80::i;3224:367:21:-;3376:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;3401:7;3376:24;:33::i;:::-;3353:15;;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;3455:13;;;;;;;;;;;:18;;;;;;;;:31;;3478:7;3455:22;:31::i;:::-;3434:13;;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:52;;;;3534;;;;;;;;;;;;;3434:13;;3534:52;;;;3549:10;;3534:52;;;;;;;;;;;3224:367;;;;:::o;3699:456::-;3891:16;:3;:14;;;:16::i;:::-;3887:264;;;3917:13;3955:3;3933:44;;;3983:9;3994:10;4006:5;4013:3;4018:7;4027:5;3933:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3933:100:21;;-1:-1:-1;4049:32:21;;;4059:22;4049:32;4041:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8371:226;8457:4;8473:42;;;8489:26;8473:42;8469:74;;;-1:-1:-1;8532:4:21;8525:11;;8469:74;8555:37;8579:12;8555:23;:37::i;1186:158:31:-;1244:7;1272:1;1267;:6;;1259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1319:5:31;;;1186:158::o;1419:::-;1477:7;1504:5;;;1523:6;;;;1515:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:1;1419:158;-1:-1:-1;;;1419:158:31:o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;882:52;-1:-1:-1;;541:398:27:o;259:148:28:-;355:47;;;371:31;355:47;259:148;;;:::o;14:198:33:-;84:20;;144:42;133:54;;123:65;;113:2;;202:1;199;192:12;217:692;;330:3;323:4;315:6;311:17;307:27;297:2;;352:5;345;338:20;297:2;396:6;383:20;421:69;436:53;482:6;436:53;:::i;:::-;421:69;:::i;:::-;524:21;;;412:78;-1:-1:-1;564:4:33;584:14;;;;618:15;;;664;;;652:28;;648:37;;645:46;-1:-1:-1;642:2:33;;;704:1;701;694:12;642:2;726:1;736:167;750:6;747:1;744:13;736:167;;;811:17;;799:30;;849:12;;;;881;;;;772:1;765:9;736:167;;;740:3;;;;;287:622;;;;:::o;914:580::-;;1011:3;1004:4;996:6;992:17;988:27;978:2;;1033:5;1026;1019:20;978:2;1077:6;1064:20;1107:18;1099:6;1096:30;1093:2;;;1129:9;1093:2;1158:117;1269:4;1200:66;1193:4;1185:6;1181:17;1177:90;1173:101;1158:117;:::i;:::-;1149:126;;1298:6;1291:5;1284:21;1352:3;1345:4;1336:6;1328;1324:19;1320:30;1317:39;1314:2;;;1369:1;1366;1359:12;1314:2;1432:6;1425:4;1417:6;1413:17;1406:4;1399:5;1395:16;1382:57;1486:1;1459:18;;;1479:4;1455:29;1448:40;1463:5;968:526;-1:-1:-1;;968:526:33:o;1499:274::-;;;1628:2;1616:9;1607:7;1603:23;1599:32;1596:2;;;1649:6;1641;1634:22;1596:2;1677:31;1698:9;1677:31;:::i;:::-;1667:41;;1727:40;1763:2;1752:9;1748:18;1727:40;:::i;:::-;1717:50;;1586:187;;;;;:::o;1778:1001::-;;;;;;2017:3;2005:9;1996:7;1992:23;1988:33;1985:2;;;2039:6;2031;2024:22;1985:2;2067:31;2088:9;2067:31;:::i;:::-;2057:41;;2117:40;2153:2;2142:9;2138:18;2117:40;:::i;:::-;2107:50;;2208:2;2197:9;2193:18;2180:32;2231:18;2272:2;2264:6;2261:14;2258:2;;;2293:6;2285;2278:22;2258:2;2321:67;2380:7;2371:6;2360:9;2356:22;2321:67;:::i;:::-;2311:77;;2441:2;2430:9;2426:18;2413:32;2397:48;;2470:2;2460:8;2457:16;2454:2;;;2491:6;2483;2476:22;2454:2;2519:69;2580:7;2569:8;2558:9;2554:24;2519:69;:::i;:::-;2509:79;;2641:3;2630:9;2626:19;2613:33;2597:49;;2671:2;2661:8;2658:16;2655:2;;;2692:6;2684;2677:22;2655:2;;2720:53;2765:7;2754:8;2743:9;2739:24;2720:53;:::i;:::-;2710:63;;;1975:804;;;;;;;;:::o;2784:632::-;;;;;;2973:3;2961:9;2952:7;2948:23;2944:33;2941:2;;;2995:6;2987;2980:22;2941:2;3023:31;3044:9;3023:31;:::i;:::-;3013:41;;3073:40;3109:2;3098:9;3094:18;3073:40;:::i;:::-;3063:50;;3160:2;3149:9;3145:18;3132:32;3122:42;;3211:2;3200:9;3196:18;3183:32;3173:42;;3266:3;3255:9;3251:19;3238:33;3294:18;3286:6;3283:30;3280:2;;;3331:6;3323;3316:22;3280:2;3359:51;3402:7;3393:6;3382:9;3378:22;3359:51;:::i;3421:713::-;;;;3617:2;3605:9;3596:7;3592:23;3588:32;3585:2;;;3638:6;3630;3623:22;3585:2;3666:31;3687:9;3666:31;:::i;:::-;3656:41;;3748:2;3737:9;3733:18;3720:32;3771:18;3812:2;3804:6;3801:14;3798:2;;;3833:6;3825;3818:22;3798:2;3861:67;3920:7;3911:6;3900:9;3896:22;3861:67;:::i;:::-;3851:77;;3981:2;3970:9;3966:18;3953:32;3937:48;;4010:2;4000:8;3997:16;3994:2;;;4031:6;4023;4016:22;3994:2;;4059:69;4120:7;4109:8;4098:9;4094:24;4059:69;:::i;:::-;4049:79;;;3575:559;;;;;:::o;4139:924::-;;;;;4361:3;4349:9;4340:7;4336:23;4332:33;4329:2;;;4383:6;4375;4368:22;4329:2;4411:31;4432:9;4411:31;:::i;:::-;4401:41;;4493:2;4482:9;4478:18;4465:32;4516:18;4557:2;4549:6;4546:14;4543:2;;;4578:6;4570;4563:22;4543:2;4606:67;4665:7;4656:6;4645:9;4641:22;4606:67;:::i;:::-;4596:77;;4726:2;4715:9;4711:18;4698:32;4682:48;;4755:2;4745:8;4742:16;4739:2;;;4776:6;4768;4761:22;4739:2;4804:69;4865:7;4854:8;4843:9;4839:24;4804:69;:::i;:::-;4794:79;;4926:2;4915:9;4911:18;4898:32;4882:48;;4955:2;4945:8;4942:16;4939:2;;;4976:6;4968;4961:22;4939:2;;5004:53;5049:7;5038:8;5027:9;5023:24;5004:53;:::i;:::-;4994:63;;;4319:744;;;;;;;:::o;5068:369::-;;;5194:2;5182:9;5173:7;5169:23;5165:32;5162:2;;;5215:6;5207;5200:22;5162:2;5243:31;5264:9;5243:31;:::i;:::-;5233:41;;5324:2;5313:9;5309:18;5296:32;5371:5;5364:13;5357:21;5350:5;5347:32;5337:2;;5398:6;5390;5383:22;5337:2;5426:5;5416:15;;;5152:285;;;;;:::o;5442:266::-;;;5571:2;5559:9;5550:7;5546:23;5542:32;5539:2;;;5592:6;5584;5577:22;5539:2;5620:31;5641:9;5620:31;:::i;:::-;5610:41;5698:2;5683:18;;;;5670:32;;-1:-1:-1;;;5529:179:33:o;5713:334::-;;;;5859:2;5847:9;5838:7;5834:23;5830:32;5827:2;;;5880:6;5872;5865:22;5827:2;5908:31;5929:9;5908:31;:::i;:::-;5898:41;5986:2;5971:18;;5958:32;;-1:-1:-1;6037:2:33;6022:18;;;6009:32;;5817:230;-1:-1:-1;;;5817:230:33:o;6052:555::-;;;;;6224:3;6212:9;6203:7;6199:23;6195:33;6192:2;;;6246:6;6238;6231:22;6192:2;6274:31;6295:9;6274:31;:::i;:::-;6264:41;;6352:2;6341:9;6337:18;6324:32;6314:42;;6403:2;6392:9;6388:18;6375:32;6365:42;;6458:2;6447:9;6443:18;6430:32;6485:18;6477:6;6474:30;6471:2;;;6522:6;6514;6507:22;6471:2;6550:51;6593:7;6584:6;6573:9;6569:22;6550:51;:::i;6612:1246::-;;;6791:2;6779:9;6770:7;6766:23;6762:32;6759:2;;;6812:6;6804;6797:22;6759:2;6857:9;6844:23;6886:18;6927:2;6919:6;6916:14;6913:2;;;6948:6;6940;6933:22;6913:2;6991:6;6980:9;6976:22;6966:32;;7036:7;7029:4;7025:2;7021:13;7017:27;7007:2;;7063:6;7055;7048:22;7007:2;7108;7095:16;7131:69;7146:53;7192:6;7146:53;:::i;7131:69::-;7222:3;7246:6;7241:3;7234:19;7272:4;7301:2;7296:3;7292:12;7285:19;;7332:2;7328;7324:11;7385:7;7380:2;7374;7366:6;7362:15;7358:2;7354:24;7350:33;7347:46;7344:2;;;7411:6;7403;7396:22;7344:2;7438:6;7429:15;;7453:175;7467:6;7464:1;7461:13;7453:175;;;7528:25;7549:3;7528:25;:::i;:::-;7516:38;;7489:1;7482:9;;;;;7574:12;;;;7606;;7453:175;;;-1:-1:-1;7647:5:33;;-1:-1:-1;7690:18:33;;7677:32;;-1:-1:-1;;;7721:16:33;;;7718:2;;;7755:6;7747;7740:22;7718:2;;7783:69;7844:7;7833:8;7822:9;7818:24;7783:69;:::i;:::-;7773:79;;;6749:1109;;;;;:::o;7863:352::-;;7974:2;7962:9;7953:7;7949:23;7945:32;7942:2;;;7995:6;7987;7980:22;7942:2;8039:9;8026:23;8089:66;8082:5;8078:78;8071:5;8068:89;8058:2;;8176:6;8168;8161:22;8220:190;;8332:2;8320:9;8311:7;8307:23;8303:32;8300:2;;;8353:6;8345;8338:22;8300:2;-1:-1:-1;8381:23:33;;8290:120;-1:-1:-1;8290:120:33:o;8415:635::-;8586:2;8638:21;;;8708:13;;8611:18;;;8730:22;;;8415:635;;8586:2;8809:15;;;;8783:2;8768:18;;;8415:635;8855:169;8869:6;8866:1;8863:13;8855:169;;;8930:13;;8918:26;;8999:15;;;;8964:12;;;;8891:1;8884:9;8855:169;;;-1:-1:-1;9041:3:33;;8566:484;-1:-1:-1;;;;;;8566:484:33:o;9055:187::-;9220:14;;9213:22;9195:41;;9183:2;9168:18;;9150:92::o;9247:662::-;;9388:2;9417;9406:9;9399:21;9449:6;9443:13;9492:6;9487:2;9476:9;9472:18;9465:34;9517:4;9530:140;9544:6;9541:1;9538:13;9530:140;;;9639:14;;;9635:23;;9629:30;9605:17;;;9624:2;9601:26;9594:66;9559:10;;9530:140;;;9688:6;9685:1;9682:13;9679:2;;;9758:4;9753:2;9744:6;9733:9;9729:22;9725:31;9718:45;9679:2;-1:-1:-1;9825:2:33;9813:15;9830:66;9809:88;9794:104;;;;9900:2;9790:113;;9368:541;-1:-1:-1;;;9368:541:33:o;9914:403::-;10116:2;10098:21;;;10155:2;10135:18;;;10128:30;10194:34;10189:2;10174:18;;10167:62;10265:9;10260:2;10245:18;;10238:37;10307:3;10292:19;;10088:229::o;10322:177::-;10468:25;;;10456:2;10441:18;;10423:76::o;10504:242::-;10574:2;10568:9;10604:17;;;10651:18;10636:34;;10672:22;;;10633:62;10630:2;;;10698:9;10630:2;10725;10718:22;10548:198;;-1:-1:-1;10548:198:33:o;10751:183::-;;10850:18;10842:6;10839:30;10836:2;;;10872:9;10836:2;-1:-1:-1;10923:4:33;10904:17;;;10900:28;;10826:108::o"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "batchBurnMock(address,uint256[],uint256[])": "bd7a6c41",
              "batchMintMock(address,uint256[],uint256[],bytes)": "d7a0ad90",
              "burnMock(address,uint256,uint256)": "437ecbe9",
              "isApprovedForAll(address,address)": "e985e9c5",
              "mintMock(address,uint256,uint256,bytes)": "a3f091f5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/mocks/ERC1155PackedBalanceMock.sol": {
        "ERC1155PackedBalanceMock": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_uri",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "batchMintMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "burnMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "getIDBinIndex",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "bin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_binValues",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_index",
                  "type": "uint256"
                }
              ],
              "name": "getValueInBin",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "mintMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50612796806100206000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c8063a3f091f51161008c578063db90e83c11610066578063db90e83c14610221578063e985e9c514610242578063eaec5f8114610255578063f242432a14610268576100e9565b8063a3f091f5146101e8578063bd7a6c41146101fb578063d7a0ad901461020e576100e9565b80632eb2c2d6116100c85780632eb2c2d61461018d578063437ecbe9146101a25780634e1273f4146101b5578063a22cb465146101d5576100e9565b8062fdd58e1461012457806301ffc9a71461014d5780630e89341c1461016d575b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011b90612359565b60405180910390fd5b6101376101323660046120b1565b61027b565b60405161014491906123b6565b60405180910390f35b61016061015b366004612220565b6102d0565b60405161014491906122dd565b61018061017b366004612260565b6102e3565b60405161014491906122e8565b6101a061019b366004611e68565b610436565b005b6101a06101b03660046120da565b610541565b6101c86101c336600461215f565b610551565b6040516101449190612299565b6101a06101e3366004612077565b6107d0565b6101a06101f636600461210c565b610869565b6101a0610209366004611f71565b61087b565b6101a061021c366004611fe2565b610886565b61023461022f366004612260565b610892565b6040516101449291906123bf565b610160610250366004611e36565b61089f565b610137610263366004612278565b6108da565b6101a0610276366004611f0e565b6108ed565b600080600061028984610892565b73ffffffffffffffffffffffffffffffffffffffff871660009081526020818152604080832085845290915290205491935091506102c790826108da565b95945050505050565b60006102db826109f1565b90505b919050565b606060026102f083610a4e565b604051602001808380546001816001161561010002031660029004801561034e5780601f1061032c57610100808354040283529182019161034e565b820191906000526020600020905b81548152906001019060200180831161033a575b5050825160208401908083835b6020831061039857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161035b565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790527f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe50181526005909201905295945050505050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061045f575061045f853361089f565b6104b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c81526020018061257e603c913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612449603d913960400191505060405180910390fd5b61052c85858585610b7a565b61053a858585855a86610f87565b5050505050565b61054c8383836111fe565b505050565b815181516060919081146105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806124106039913960400191505060405180910390fd5b6000806105d0856000815181106105c357fe5b6020026020010151610892565b915091506000806000886000815181106105e657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020549050600083905060608567ffffffffffffffff8111801561065a57600080fd5b50604051908082528060200260200182016040528015610684578160200160208202803683370190505b50905061069183856108da565b8160008151811061069e57fe5b602090810291909101015260015b868110156107c3576106c38982815181106105c357fe5b9096509450828614158061072c57508981815181106106de57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a600183038151811061070b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561079a576000808b838151811061074057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000205493508592505b6107a484866108da565b8282815181106107b057fe5b60209081029190910101526001016106ac565b5098975050505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61087584848484611268565b50505050565b61054c8383836112dc565b61087584848484611485565b6008810491600790911690565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6020810282901c63ffffffff1692915050565b3373ffffffffffffffffffffffffffffffffffffffff861614806109165750610916853361089f565b61096b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806124b96037913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806126746038913960400191505060405180910390fd5b6109e38585858561170f565b61053a858585855a866117b3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c000000000000000000000000000000000000000000000000000000001415610a45575060016102de565b6102db826119a4565b606081610a8f575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526102de565b818060005b8215610aa857600101600a83049250610a94565b60608167ffffffffffffffff81118015610ac157600080fd5b506040519080825280601f01601f191660200182016040528015610aec576020820181803683370190505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8315610b7057600a840660300160f81b82828060019003935081518110610b3657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350610b13565b5095945050505050565b815181518114610bd5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806124f06042913960600191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610c115750600081115b15610de357600080610c29856000815181106105c357fe5b73ffffffffffffffffffffffffffffffffffffffff8916600090815260208181526040808320858452909152812054875193955091935091610c819190849088908590610c7257fe5b60200260200101516001611a01565b73ffffffffffffffffffffffffffffffffffffffff881660009081526020818152604080832087845290915281205487519293509091610cd79190859089908590610cc857fe5b60200260200101516000611a01565b90508360015b86811015610d9157610cf48982815181106105c357fe5b9096509450818614610d635773ffffffffffffffffffffffffffffffffffffffff8b811660009081526020818152604080832086845280835281842098909855928d16825281815282822094825284815282822095909555878152948452808520549290935291909220549084905b610d7484868a8481518110610c7257fe5b9350610d8783868a8481518110610cc857fe5b9250600101610cdd565b505073ffffffffffffffffffffffffffffffffffffffff808a16600090815260208181526040808320888452825280832095909555918a16815280825283812095815294905292209190915550610e80565b60005b81811015610e7e57828181518110610dfa57fe5b6020026020010151610e1f87868481518110610e1257fe5b602002602001015161027b565b1015610e76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806125f76036913960400191505060405180910390fd5b600101610de6565b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610f2c578181015183820152602001610f14565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610f6b578181015183820152602001610f53565b5050505090500194505050505060405180910390a45050505050565b610fa68573ffffffffffffffffffffffffffffffffffffffff16611c14565b156111f65760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561105e578181015183820152602001611046565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561109d578181015183820152602001611085565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156110d95781810151838201526020016110c1565b50505050905090810190601f1680156111065780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561112b57600080fd5b5087f115801561113f573d6000803e3d6000fd5b50505050506040513d602081101561115657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146111f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604c815260200180612532604c913960600191505060405180910390fd5b505b505050505050565b61120b8383836001611c4e565b6040805183815260208101839052815160009273ffffffffffffffffffffffffffffffffffffffff87169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a4505050565b6112758484846000611c4e565b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff87169260009233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a461087560008585855a866117b3565b815181518114611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806125ba603d913960400191505060405180910390fd5b60005b8181101561137d576113758585838151811061135257fe5b602002602001015185848151811061136657fe5b60200260200101516001611c4e565b60010161133a565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561142b578181015183820152602001611413565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561146a578181015183820152602001611452565b5050505090500194505050505060405180910390a450505050565b81518351146114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001806126f1603e913960400191505060405180910390fd5b8251156115ff576000806114f9856000815181106105c357fe5b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091528120548751939550919350916115429190849088908590610cc857fe5b86519091508360015b828110156115c6576115628982815181106105c357fe5b90965094508186146115ab5773ffffffffffffffffffffffffffffffffffffffff8a16600090815260208181526040808320948352939052828120949094558584529220549184905b6115bc84868a8481518110610cc857fe5b935060010161154b565b50505073ffffffffffffffffffffffffffffffffffffffff87166000908152602081815260408083209583529490529290922091909155505b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156116ac578181015183820152602001611694565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156116eb5781810151838201526020016116d3565b5050505090500194505050505060405180910390a461087560008585855a86610f87565b61171c8483836001611c4e565b6117298383836000611c4e565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051808381526020018281526020019250505060405180910390a450505050565b6117d28573ffffffffffffffffffffffffffffffffffffffff16611c14565b156111f65760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561188b578181015183820152602001611873565b50505050905090810190601f1680156118b85780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156118db57600080fd5b5087f11580156118ef573d6000803e3d6000fd5b50505050506040513d602081101561190657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146111f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604781526020018061262d6047913960600191505060405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156119f8575060016102de565b6102db82611cd5565b60006020840263ffffffff82846001811115611a1957fe5b1415611ae75784821b8701925086831015611a7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061272f6032913960400191505060405180910390fd5b64010000000087831c8216860110611ae2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061272f6032913960400191505060405180910390fd5b611c0a565b6001846001811115611af557fe5b1415611bb95784821b8703925086831115611b5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806124866033913960400191505060405180910390fd5b84818389901c161015611ae2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806124866033913960400191505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806126ac6045913960600191505060405180910390fd5b5050949350505050565b6000813f8015801590611c4757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b600080611c5a85610892565b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091529020549193509150611c9a90828686611a01565b73ffffffffffffffffffffffffffffffffffffffff909616600090815260208181526040808320948352939052919091209490945550505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146102de57600080fd5b600082601f830112611d53578081fd5b8135611d66611d61826123f1565b6123cd565b818152915060208083019084810181840286018201871015611d8757600080fd5b60005b84811015611da657813584529282019290820190600101611d8a565b505050505092915050565b600082601f830112611dc1578081fd5b813567ffffffffffffffff811115611dd557fe5b611e0660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123cd565b9150808252836020828501011115611e1d57600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611e48578182fd5b611e5183611d1f565b9150611e5f60208401611d1f565b90509250929050565b600080600080600060a08688031215611e7f578081fd5b611e8886611d1f565b9450611e9660208701611d1f565b9350604086013567ffffffffffffffff80821115611eb2578283fd5b611ebe89838a01611d43565b94506060880135915080821115611ed3578283fd5b611edf89838a01611d43565b93506080880135915080821115611ef4578283fd5b50611f0188828901611db1565b9150509295509295909350565b600080600080600060a08688031215611f25578081fd5b611f2e86611d1f565b9450611f3c60208701611d1f565b93506040860135925060608601359150608086013567ffffffffffffffff811115611f65578182fd5b611f0188828901611db1565b600080600060608486031215611f85578283fd5b611f8e84611d1f565b9250602084013567ffffffffffffffff80821115611faa578384fd5b611fb687838801611d43565b93506040860135915080821115611fcb578283fd5b50611fd886828701611d43565b9150509250925092565b60008060008060808587031215611ff7578384fd5b61200085611d1f565b9350602085013567ffffffffffffffff8082111561201c578485fd5b61202888838901611d43565b9450604087013591508082111561203d578384fd5b61204988838901611d43565b9350606087013591508082111561205e578283fd5b5061206b87828801611db1565b91505092959194509250565b60008060408385031215612089578182fd5b61209283611d1f565b9150602083013580151581146120a6578182fd5b809150509250929050565b600080604083850312156120c3578182fd5b6120cc83611d1f565b946020939093013593505050565b6000806000606084860312156120ee578283fd5b6120f784611d1f565b95602085013595506040909401359392505050565b60008060008060808587031215612121578384fd5b61212a85611d1f565b93506020850135925060408501359150606085013567ffffffffffffffff811115612153578182fd5b61206b87828801611db1565b60008060408385031215612171578081fd5b823567ffffffffffffffff80821115612188578283fd5b818501915085601f83011261219b578283fd5b81356121a9611d61826123f1565b80828252602080830192508086018a8283870289010111156121c9578788fd5b8796505b848710156121f2576121de81611d1f565b8452600196909601959281019281016121cd565b509096508701359350505080821115612209578283fd5b5061221685828601611d43565b9150509250929050565b600060208284031215612231578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611c47578182fd5b600060208284031215612271578081fd5b5035919050565b6000806040838503121561228a578182fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156122d1578351835292840192918401916001016122b5565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b81811015612314578581018301518582016040015282016122f8565b818111156123255783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526034908201527f455243313135354d6574614d696e744275726e5061636b656442616c616e636560408201527f4d6f636b3a20494e56414c49445f4d4554484f44000000000000000000000000606082015260800190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156123e957fe5b604052919050565b600067ffffffffffffffff82111561240557fe5b506020908102019056fe455243313135355061636b656442616c616e63652362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e475448455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20554e444552464c4f57455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e5061636b656442616c616e63652362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20554e444552464c4f57455243313135355061636b656442616c616e6365235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20494e56414c49445f42494e5f57524954455f4f5045524154494f4e455243313135354d696e744275726e5061636b656442616c616e6365235f62617463684d696e743a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a204f564552464c4f57a2646970667358221220480c2653d4b2426828d1969e37ecdc9999ec436e15f4045a8375c757fe71e97064736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2796 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3F091F5 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDB90E83C GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDB90E83C EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xEAEC5F81 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x268 JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH4 0xA3F091F5 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0xBD7A6C41 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0xD7A0AD90 EQ PUSH2 0x20E JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x437ECBE9 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1D5 JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x16D JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11B SWAP1 PUSH2 0x2359 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x137 PUSH2 0x132 CALLDATASIZE PUSH1 0x4 PUSH2 0x20B1 JUMP JUMPDEST PUSH2 0x27B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x23B6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x160 PUSH2 0x15B CALLDATASIZE PUSH1 0x4 PUSH2 0x2220 JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x22DD JUMP JUMPDEST PUSH2 0x180 PUSH2 0x17B CALLDATASIZE PUSH1 0x4 PUSH2 0x2260 JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x22E8 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x1E68 JUMP JUMPDEST PUSH2 0x436 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A0 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x20DA JUMP JUMPDEST PUSH2 0x541 JUMP JUMPDEST PUSH2 0x1C8 PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x215F JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x2299 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x1E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2077 JUMP JUMPDEST PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x210C JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F71 JUMP JUMPDEST PUSH2 0x87B JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE2 JUMP JUMPDEST PUSH2 0x886 JUMP JUMPDEST PUSH2 0x234 PUSH2 0x22F CALLDATASIZE PUSH1 0x4 PUSH2 0x2260 JUMP JUMPDEST PUSH2 0x892 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP3 SWAP2 SWAP1 PUSH2 0x23BF JUMP JUMPDEST PUSH2 0x160 PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x89F JUMP JUMPDEST PUSH2 0x137 PUSH2 0x263 CALLDATASIZE PUSH1 0x4 PUSH2 0x2278 JUMP JUMPDEST PUSH2 0x8DA JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x276 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F0E JUMP JUMPDEST PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x289 DUP5 PUSH2 0x892 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x2C7 SWAP1 DUP3 PUSH2 0x8DA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DB DUP3 PUSH2 0x9F1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH2 0x2F0 DUP4 PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x32C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x33A JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x398 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x35B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x2E6A736F6E000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 ADD DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP3 ADD SWAP1 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x45F JUMPI POP PUSH2 0x45F DUP6 CALLER PUSH2 0x89F JUMP JUMPDEST PUSH2 0x4B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x257E PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x520 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2449 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x52C DUP6 DUP6 DUP6 DUP6 PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x53A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xF87 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x54C DUP4 DUP4 DUP4 PUSH2 0x11FE JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 SWAP1 DUP2 EQ PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2410 PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5D0 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x892 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP4 SWAP1 POP PUSH1 0x60 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x684 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x691 DUP4 DUP6 PUSH2 0x8DA JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x69E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x7C3 JUMPI PUSH2 0x6C3 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP3 DUP7 EQ ISZERO DUP1 PUSH2 0x72C JUMPI POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x6DE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x70B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x79A JUMPI PUSH1 0x0 DUP1 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x740 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP4 POP DUP6 SWAP3 POP JUMPDEST PUSH2 0x7A4 DUP5 DUP7 PUSH2 0x8DA JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7B0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x6AC JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x875 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1268 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x54C DUP4 DUP4 DUP4 PUSH2 0x12DC JUMP JUMPDEST PUSH2 0x875 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1485 JUMP JUMPDEST PUSH1 0x8 DUP2 DIV SWAP2 PUSH1 0x7 SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL DUP3 SWAP1 SHR PUSH4 0xFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x916 JUMPI POP PUSH2 0x916 DUP6 CALLER PUSH2 0x89F JUMP JUMPDEST PUSH2 0x96B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24B9 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x9D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2674 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9E3 DUP6 DUP6 DUP6 DUP6 PUSH2 0x170F JUMP JUMPDEST PUSH2 0x53A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x17B3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xA45 JUMPI POP PUSH1 0x1 PUSH2 0x2DE JUMP JUMPDEST PUSH2 0x2DB DUP3 PUSH2 0x19A4 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xA8F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2DE JUMP JUMPDEST DUP2 DUP1 PUSH1 0x0 JUMPDEST DUP3 ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP4 DIV SWAP3 POP PUSH2 0xA94 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xAEC JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0xB70 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0xB36 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0xB13 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0xBD5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24F0 PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xC11 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xDE3 JUMPI PUSH1 0x0 DUP1 PUSH2 0xC29 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0xC81 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xC72 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1A01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0xCD7 SWAP2 SWAP1 DUP6 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH2 0xCC8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH2 0x1A01 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xD91 JUMPI PUSH2 0xCF4 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0xD63 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SWAP9 SWAP1 SWAP9 SSTORE SWAP3 DUP14 AND DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP5 DUP3 MSTORE DUP5 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP8 DUP2 MSTORE SWAP5 DUP5 MSTORE DUP1 DUP6 KECCAK256 SLOAD SWAP3 SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 SLOAD SWAP1 DUP5 SWAP1 JUMPDEST PUSH2 0xD74 DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC72 JUMPI INVALID JUMPDEST SWAP4 POP PUSH2 0xD87 DUP4 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCC8 JUMPI INVALID JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xCDD JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP2 DUP11 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP4 DUP2 KECCAK256 SWAP6 DUP2 MSTORE SWAP5 SWAP1 MSTORE SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP PUSH2 0xE80 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE7E JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xDFA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xE1F DUP8 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE12 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x27B JUMP JUMPDEST LT ISZERO PUSH2 0xE76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x25F7 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0xDE6 JUMP JUMPDEST POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF2C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF14 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF53 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFA6 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST ISZERO PUSH2 0x11F6 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x105E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1046 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x109D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1085 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10D9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10C1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1106 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x112B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x113F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2532 PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x120B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH2 0x1275 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 PUSH1 0x0 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x875 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x17B3 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1337 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x25BA PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x137D JUMPI PUSH2 0x1375 DUP6 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1352 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1366 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x133A JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x142B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1413 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x146A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1452 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x14DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26F1 PUSH1 0x3E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x15FF JUMPI PUSH1 0x0 DUP1 PUSH2 0x14F9 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0x1542 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xCC8 JUMPI INVALID JUMPDEST DUP7 MLOAD SWAP1 SWAP2 POP DUP4 PUSH1 0x1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x15C6 JUMPI PUSH2 0x1562 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0x15AB JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE DUP3 DUP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP6 DUP5 MSTORE SWAP3 KECCAK256 SLOAD SWAP2 DUP5 SWAP1 JUMPDEST PUSH2 0x15BC DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCC8 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x1 ADD PUSH2 0x154B JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP6 DUP4 MSTORE SWAP5 SWAP1 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1694 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x875 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xF87 JUMP JUMPDEST PUSH2 0x171C DUP5 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH2 0x1729 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1C4E JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x17D2 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST ISZERO PUSH2 0x11F6 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x188B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1873 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18B8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x18EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x262D PUSH1 0x47 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x19F8 JUMPI POP PUSH1 0x1 PUSH2 0x2DE JUMP JUMPDEST PUSH2 0x2DB DUP3 PUSH2 0x1CD5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP5 MUL PUSH4 0xFFFFFFFF DUP3 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1A19 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1AE7 JUMPI DUP5 DUP3 SHL DUP8 ADD SWAP3 POP DUP7 DUP4 LT ISZERO PUSH2 0x1A7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x272F PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH5 0x100000000 DUP8 DUP4 SHR DUP3 AND DUP7 ADD LT PUSH2 0x1AE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x272F PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C0A JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1AF5 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1BB9 JUMPI DUP5 DUP3 SHL DUP8 SUB SWAP3 POP DUP7 DUP4 GT ISZERO PUSH2 0x1B5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2486 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 DUP2 DUP4 DUP10 SWAP1 SHR AND LT ISZERO PUSH2 0x1AE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2486 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26AC PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C47 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 EQ ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C5A DUP6 PUSH2 0x892 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x1C9A SWAP1 DUP3 DUP7 DUP7 PUSH2 0x1A01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D53 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D66 PUSH2 0x1D61 DUP3 PUSH2 0x23F1 JUMP JUMPDEST PUSH2 0x23CD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1D87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DA6 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1D8A JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DC1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DD5 JUMPI INVALID JUMPDEST PUSH2 0x1E06 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x23CD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1E1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E48 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1E51 DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP2 POP PUSH2 0x1E5F PUSH1 0x20 DUP5 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1E7F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1E88 DUP7 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 POP PUSH2 0x1E96 PUSH1 0x20 DUP8 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1EB2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1EBE DUP10 DUP4 DUP11 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1ED3 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1EDF DUP10 DUP4 DUP11 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1EF4 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1F01 DUP9 DUP3 DUP10 ADD PUSH2 0x1DB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1F25 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1F2E DUP7 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 POP PUSH2 0x1F3C PUSH1 0x20 DUP8 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F65 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1F01 DUP9 DUP3 DUP10 ADD PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F85 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1F8E DUP5 PUSH2 0x1D1F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1FAA JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1FB6 DUP8 DUP4 DUP9 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1FCB JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1FD8 DUP7 DUP3 DUP8 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1FF7 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2000 DUP6 PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x201C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2028 DUP9 DUP4 DUP10 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x203D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2049 DUP9 DUP4 DUP10 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x205E JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x206B DUP8 DUP3 DUP9 ADD PUSH2 0x1DB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2089 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2092 DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x20A6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20C3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x20CC DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x20EE JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x20F7 DUP5 PUSH2 0x1D1F JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2121 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x212A DUP6 PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2153 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x206B DUP8 DUP3 DUP9 ADD PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2171 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2188 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x219B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21A9 PUSH2 0x1D61 DUP3 PUSH2 0x23F1 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x21C9 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x21F2 JUMPI PUSH2 0x21DE DUP2 PUSH2 0x1D1F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x21CD JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x2209 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2216 DUP6 DUP3 DUP7 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2231 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x1C47 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2271 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x228A JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x22D1 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x22B5 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2314 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x22F8 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2325 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D6574614D696E744275726E5061636B656442616C616E6365 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4D6F636B3A20494E56414C49445F4D4554484F44000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x23E9 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2405 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH13 0x616E63654F6642617463683A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20554E444552464C4F JUMPI GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20494E56414C49445F4152524159535F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E5061636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH21 0x63684275726E3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20554E444552464C4F57455243313135 CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20494E56414C49445F TIMESTAMP 0x49 0x4E 0x5F JUMPI MSTORE 0x49 SLOAD GASLIMIT 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x49 0x4F 0x4E GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E5061636B PUSH6 0x6442616C616E PUSH4 0x65235F62 PUSH2 0x7463 PUSH9 0x4D696E743A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A204F564552464C4F57 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x48 0xC 0x26 MSTORE8 0xD4 0xB2 TIMESTAMP PUSH9 0x28D1969E37ECDC9999 0xEC NUMBER PUSH15 0x15F4045A8375C757FE71E97064736F PUSH13 0x63430007040033000000000000 ",
              "sourceMap": "182:74:5:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:11465:33",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:33",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "65:147:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "75:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "97:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "84:20:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "75:5:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "190:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "199:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "202:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "192:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "192:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "192:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "126:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "137:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "144:42:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "133:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "133:54:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "123:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "123:65:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "116:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "116:73:33"
                              },
                              "nodeType": "YulIf",
                              "src": "113:2:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "44:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "55:5:33",
                            "type": ""
                          }
                        ],
                        "src": "14:198:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "287:622:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "336:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "345:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "352:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "338:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "338:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "338:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "315:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "323:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "311:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "311:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "330:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "307:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "307:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "300:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "300:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "297:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "369:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "396:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "383:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "383:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "373:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "412:78:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "482:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "436:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "436:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "421:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "421:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "412:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "499:16:33",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "510:5:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "503:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "531:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "538:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "524:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "524:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "524:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "554:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "564:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "558:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "577:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "588:5:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "595:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "584:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "584:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "577:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "607:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "622:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "630:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "618:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "618:15:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "611:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "692:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "701:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "704:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "694:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "694:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "694:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "656:6:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "668:6:33"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "676:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "664:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "664:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "652:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "652:28:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "682:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "648:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "648:37:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "687:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "645:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "645:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "642:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "717:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "726:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "721:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "785:118:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "806:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "824:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "811:12:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "811:17:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "799:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "799:30:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "799:30:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "842:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "853:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "858:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "849:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "849:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "842:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "874:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "885:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "890:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "881:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "881:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "874:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "747:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "750:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "744:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "744:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "758:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "760:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "769:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "772:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "765:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "765:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "760:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "740:3:33",
                                "statements": []
                              },
                              "src": "736:167:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "261:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "269:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "277:5:33",
                            "type": ""
                          }
                        ],
                        "src": "217:692:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "968:526:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1017:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1026:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1033:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1019:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1019:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1019:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "996:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1004:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "992:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "992:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1011:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "988:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "988:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "981:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "981:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "978:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1050:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1077:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1064:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1064:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1054:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1127:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "1129:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1129:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1129:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1099:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1107:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1096:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1096:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1093:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1149:126:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1185:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1193:4:33",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1181:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1181:17:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1200:66:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1177:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1177:90:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1269:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1173:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1173:101:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1158:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1158:117:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1149:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1291:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1298:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1284:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1284:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1284:21:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1357:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1366:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1369:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1359:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1359:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1359:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1328:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1336:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1324:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1324:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1345:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1320:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1320:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1352:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1317:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1317:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1314:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "1399:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1406:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1395:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1395:16:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1417:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1425:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1413:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1413:17:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1432:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1382:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1382:57:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1382:57:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "1463:5:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1470:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1459:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1459:18:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1479:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1455:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1455:29:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1486:1:33",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1448:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1448:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1448:40:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "942:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "950:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "958:5:33",
                            "type": ""
                          }
                        ],
                        "src": "914:580:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1586:187:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1632:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1641:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1649:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1634:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1634:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1634:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1607:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1616:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1603:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1603:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1628:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1599:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1599:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1596:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1667:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1698:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1667:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1717:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1752:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1763:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1748:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1748:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1727:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1727:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1717:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1544:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1555:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1567:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1575:6:33",
                            "type": ""
                          }
                        ],
                        "src": "1499:274:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1975:804:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2022:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2031:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2039:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2024:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2024:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2024:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1996:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2005:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1992:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1992:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2017:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1988:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1988:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1985:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2057:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2088:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2067:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2067:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2057:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2107:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2142:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2153:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2138:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2138:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2117:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2117:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2107:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2166:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2197:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2208:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2193:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2193:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2180:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2180:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2170:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2221:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2231:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2225:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2276:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2285:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2293:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2278:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2278:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2278:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2264:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2272:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2261:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2261:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2258:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2311:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2360:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2371:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2356:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2356:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2380:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2321:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2321:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2311:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2397:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2430:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2441:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2426:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2426:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2413:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2413:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2401:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2474:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2483:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2491:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2476:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2476:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2476:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2460:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2470:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2457:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2457:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2454:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2509:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2558:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2569:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2554:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2554:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2580:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2519:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2519:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2509:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2597:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2630:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2641:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2626:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2626:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2613:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2613:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2601:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2675:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2684:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2692:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2677:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2677:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2677:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2661:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2671:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2658:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2658:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2655:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2710:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2743:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2754:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2739:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2739:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2765:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "2720:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2720:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2710:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1909:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1920:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1932:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1940:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1948:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1956:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1964:6:33",
                            "type": ""
                          }
                        ],
                        "src": "1778:1001:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2931:485:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2978:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2987:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2995:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2980:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2980:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2980:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2952:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2961:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2948:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2948:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2973:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2944:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2944:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2941:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3013:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3044:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3023:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3023:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3013:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3063:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3098:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3109:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3094:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3094:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3073:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3073:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3063:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3122:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3149:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3160:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3145:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3145:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3132:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3132:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3122:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3173:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3200:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3211:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3196:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3196:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3183:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3183:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3173:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3224:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3255:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3266:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3251:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3251:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3238:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3238:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3228:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3314:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3323:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3331:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3316:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3316:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3316:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3286:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3294:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3283:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3280:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3349:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3382:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3393:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3378:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3378:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3402:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3359:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3359:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3349:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2865:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2876:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2888:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2896:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2904:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2912:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2920:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2784:632:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3575:559:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3621:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3630:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3638:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3623:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3623:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3623:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3596:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3605:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3592:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3592:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3617:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3588:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3588:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3585:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3656:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3687:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3666:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3666:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3656:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3706:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3737:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3748:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3733:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3733:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3720:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3720:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3710:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3761:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3771:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3765:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3816:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3825:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3833:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3818:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3818:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3818:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3804:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3812:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3801:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3801:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3798:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3851:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3900:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3911:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3896:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3896:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3920:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "3861:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3861:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3851:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3937:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3970:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3981:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3966:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3966:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3953:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3953:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3941:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4014:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4023:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4031:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4016:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4016:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4016:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4000:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4010:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3997:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3997:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3994:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4049:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4098:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4109:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4094:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4094:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4120:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4059:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4059:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4049:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3525:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3536:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3548:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3556:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3564:6:33",
                            "type": ""
                          }
                        ],
                        "src": "3421:713:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4319:744:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4366:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4375:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4383:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4368:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4368:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4368:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4340:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4349:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4336:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4336:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4361:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4332:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4332:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4329:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4401:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4432:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4411:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4411:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4401:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4451:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4482:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4493:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4478:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4478:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4465:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4465:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4455:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4506:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4516:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4510:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4561:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4570:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4578:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4563:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4563:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4563:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4549:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4557:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4546:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4546:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4543:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4596:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4645:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4656:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4641:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4641:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4665:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4606:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4606:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4596:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4682:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4715:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4726:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4711:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4711:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4698:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4698:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4686:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4759:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4768:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4776:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4761:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4761:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4761:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4745:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4755:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4742:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4742:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4739:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4794:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4843:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4854:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4839:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4839:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4865:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4804:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4804:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4794:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4882:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4915:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4926:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4911:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4911:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4898:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4898:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4886:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4959:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4968:6:33"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4976:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4961:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4961:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4961:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4945:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4955:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4942:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4942:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4939:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4994:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5027:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5038:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5023:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5023:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5049:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5004:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5004:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4994:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4261:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4272:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4284:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4292:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4300:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4308:6:33",
                            "type": ""
                          }
                        ],
                        "src": "4139:924:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5152:285:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5198:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5207:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5215:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5200:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5200:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5173:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5182:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5169:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5169:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5194:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5165:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5165:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5162:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5233:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5264:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5243:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5243:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5233:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5283:45:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5313:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5324:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5309:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5309:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5296:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5296:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5287:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5381:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5390:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5398:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5383:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5383:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5383:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5350:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "5371:5:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "5364:6:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5364:13:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "5357:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5357:21:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5347:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5347:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5340:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5340:40:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5337:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5416:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5426:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5416:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5110:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5121:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5133:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5141:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5068:369:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5529:179:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5575:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5584:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5592:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5577:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5577:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5577:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5550:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5559:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5546:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5546:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5571:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5542:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5542:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5539:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5610:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5641:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5620:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5620:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5610:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5660:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5687:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5698:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5683:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5683:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5670:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5670:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5660:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5487:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5498:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5510:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5518:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5442:266:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5817:230:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5863:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5872:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5880:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5865:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5865:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5865:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5838:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5847:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5834:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5834:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5859:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5830:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5830:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5827:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5898:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5929:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5908:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5908:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5898:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5948:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5975:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5986:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5971:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5971:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5958:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5958:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5948:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5999:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6026:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6037:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6022:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6022:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6009:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6009:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5999:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5767:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5778:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5790:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5798:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5806:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5713:334:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6182:425:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6229:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6238:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6246:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6231:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6231:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6231:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6203:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6212:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6199:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6199:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6224:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6195:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6195:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6192:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6264:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6295:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6274:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6274:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6264:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6314:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6341:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6352:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6337:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6337:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6324:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6324:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6314:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6365:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6392:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6403:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6388:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6388:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6375:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6375:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6365:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6416:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6447:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6458:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6443:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6443:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6430:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6430:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6420:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6505:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6514:6:33"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6522:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6507:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6507:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6507:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6477:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6485:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6474:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6474:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6471:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6540:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6573:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6584:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6569:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6569:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6593:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6550:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6550:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6540:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6124:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6135:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6147:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6155:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6163:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6171:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6052:555:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6749:1109:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6795:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6804:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6812:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6797:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6797:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6797:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6770:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6779:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6766:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6766:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6791:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6762:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6762:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6759:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6830:37:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6857:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6844:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6844:23:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6834:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6876:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6886:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6880:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6931:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6940:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6948:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6933:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6933:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6933:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6919:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6927:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6916:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6916:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6913:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6966:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6980:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6991:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6976:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6976:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6970:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7046:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7055:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7063:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7048:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7048:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7048:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7025:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7029:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7021:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7021:13:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7036:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7017:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7017:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7010:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7010:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7007:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7081:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7108:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7095:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7095:16:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7085:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7120:80:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7192:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "7146:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7146:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "7131:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7131:69:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "7124:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7209:16:33",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "7222:3:33"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7213:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "7241:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7246:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7234:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7234:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7234:19:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7262:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7272:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "7266:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7285:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "7296:3:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7301:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7292:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7292:12:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "7285:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7313:22:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7328:2:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7332:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7324:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7324:11:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "7317:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7394:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7403:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7411:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7396:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7396:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7396:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7358:2:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7366:6:33"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "7374:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "7362:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7362:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7354:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7354:24:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "7380:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7350:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7350:33:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7385:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7347:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7347:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7344:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7429:15:33",
                              "value": {
                                "name": "value1",
                                "nodeType": "YulIdentifier",
                                "src": "7438:6:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7433:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7502:126:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7523:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "7549:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "7528:20:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7528:25:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7516:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7516:38:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7516:38:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7567:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7578:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "7583:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7574:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7574:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "7567:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7599:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "7610:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "7615:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7606:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7606:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "7599:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7464:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7467:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7461:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7461:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7475:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7477:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7486:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7489:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7482:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7482:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7477:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7457:3:33",
                                "statements": []
                              },
                              "src": "7453:175:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7637:15:33",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "7647:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7637:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7661:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7694:9:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "7705:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7690:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7690:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7677:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7677:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7665:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7738:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7747:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7755:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7740:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7740:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7740:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7724:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7734:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7721:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7721:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7718:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7773:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7822:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7833:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7818:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7818:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7844:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "7783:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7783:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7773:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6707:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6718:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6730:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6738:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6612:1246:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7932:283:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7978:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7987:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7995:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7980:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7980:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7980:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7953:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7962:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7949:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7949:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7974:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7945:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7945:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7942:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8013:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8039:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8026:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8026:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8017:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8159:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8168:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8176:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8161:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8161:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8161:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "8071:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "8082:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8089:66:33",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8078:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8078:78:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "8068:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8068:89:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8061:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8061:97:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8058:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8194:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8204:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8194:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7898:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7909:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7921:6:33",
                            "type": ""
                          }
                        ],
                        "src": "7863:352:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8290:120:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8336:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8345:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8353:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8338:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8338:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8338:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8311:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8320:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8307:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8307:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8332:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8303:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8303:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8300:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8371:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8394:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8381:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8381:23:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8371:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8256:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8267:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8279:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8220:190:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8502:171:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8548:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8557:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8565:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8550:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8550:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8550:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8523:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8532:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8519:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8519:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8544:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8515:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8515:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8512:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8583:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8606:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8593:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8593:23:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8583:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8625:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8652:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8663:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8648:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8648:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8635:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8635:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8625:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8460:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8471:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8483:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8491:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8415:258:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8829:484:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8839:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8849:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8843:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8860:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8878:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8889:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8874:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8874:18:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8864:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8908:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8919:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8901:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8901:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8901:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8931:17:33",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "8942:6:33"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "8935:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8957:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8977:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8971:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8971:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "8961:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9000:6:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9008:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8993:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8993:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8993:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9024:25:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9035:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9046:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9031:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9031:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "9024:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9058:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9076:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9084:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9072:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9072:15:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "9062:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9096:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "9105:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "9100:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9167:120:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "9188:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "9199:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9193:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9193:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9181:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9181:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9181:26:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9220:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "9231:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9236:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9227:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9227:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "9220:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9252:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "9266:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9274:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9262:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9262:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9252:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9129:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9132:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9126:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9126:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9140:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9142:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "9151:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9154:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9147:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9147:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "9142:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9122:3:33",
                                "statements": []
                              },
                              "src": "9118:169:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9296:11:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "9304:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9296:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8798:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8809:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8820:4:33",
                            "type": ""
                          }
                        ],
                        "src": "8678:635:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9413:92:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9423:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9435:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9446:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9431:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9431:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9423:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9465:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "9490:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "9483:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9483:14:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "9476:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9476:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9458:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9458:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9458:41:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9382:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9393:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9404:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9318:187:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9631:541:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9641:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9651:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9645:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9669:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9680:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9662:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9662:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9662:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9692:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9712:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9706:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9706:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "9696:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9739:9:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9750:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9735:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9735:18:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9755:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9728:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9728:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9728:34:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9771:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "9780:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "9775:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9843:90:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9872:9:33"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9883:1:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9868:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9868:17:33"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9887:2:33",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9864:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9864:26:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "9906:6:33"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "9914:1:33"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9902:3:33"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "9902:14:33"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9918:2:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9898:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9898:23:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9892:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9892:30:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9857:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9857:66:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9857:66:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9804:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9807:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9801:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9801:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9815:19:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9817:15:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "9826:1:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9829:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9822:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9822:10:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "9817:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9797:3:33",
                                "statements": []
                              },
                              "src": "9793:140:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9967:69:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9996:9:33"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10007:6:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9992:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9992:22:33"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "10016:2:33",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9988:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9988:31:33"
                                        },
                                        {
                                          "name": "tail",
                                          "nodeType": "YulIdentifier",
                                          "src": "10021:4:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9981:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9981:45:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9981:45:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9948:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9951:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9945:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9945:13:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9942:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10045:121:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10061:9:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "10080:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10088:2:33",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "10076:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10076:15:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10093:66:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "10072:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10072:88:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10057:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10057:104:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10163:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10053:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10053:113:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10045:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9600:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9611:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9622:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9510:662:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10351:242:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10368:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10379:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10361:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10361:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10361:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10402:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10413:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10398:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10398:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10418:2:33",
                                    "type": "",
                                    "value": "52"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10391:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10391:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10391:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10441:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10452:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10437:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10437:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10457:34:33",
                                    "type": "",
                                    "value": "ERC1155MetaMintBurnPackedBalance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10430:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10430:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10430:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10512:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10523:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10508:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10508:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10528:22:33",
                                    "type": "",
                                    "value": "Mock: INVALID_METHOD"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10501:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10501:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10501:50:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10560:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10572:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10583:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10568:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10568:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10560:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dd3528a478237acd768e367188bd6147b1a4b40dbf3a30af8b1cf6e449468a07__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10328:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10342:4:33",
                            "type": ""
                          }
                        ],
                        "src": "10177:416:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10699:76:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10709:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10721:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10732:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10717:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10717:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10709:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10751:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10762:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10744:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10744:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10744:25:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10668:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10679:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10690:4:33",
                            "type": ""
                          }
                        ],
                        "src": "10598:177:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10909:119:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10919:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10931:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10942:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10927:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10927:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10919:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10961:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10972:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10954:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10954:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10954:25:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10999:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11010:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10995:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10995:18:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11015:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10988:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10988:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10988:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10870:9:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10881:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10889:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10900:4:33",
                            "type": ""
                          }
                        ],
                        "src": "10780:248:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11077:198:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11087:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11103:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11097:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11097:9:33"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "11087:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11115:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11137:6:33"
                                  },
                                  {
                                    "name": "size",
                                    "nodeType": "YulIdentifier",
                                    "src": "11145:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11133:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11133:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11119:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11225:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "11227:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11227:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11227:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11168:10:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11180:18:33",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11165:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11165:34:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11204:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11216:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11201:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11201:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "11162:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11162:62:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11159:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11254:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11258:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11247:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11247:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11247:22:33"
                            }
                          ]
                        },
                        "name": "allocateMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "11057:4:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "11066:6:33",
                            "type": ""
                          }
                        ],
                        "src": "11033:242:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11355:108:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11399:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "11401:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11401:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11401:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11371:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11379:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11368:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11368:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11365:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11421:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "11437:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11445:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "11433:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11433:17:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11452:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11429:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11429:28:33"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "11421:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_t_array$_t_address_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "11335:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "11346:4:33",
                            "type": ""
                          }
                        ],
                        "src": "11280:183:33"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_t_array$_t_uint256_$dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst := array\n        mstore(array, length)\n        let _1 := 0x20\n        dst := add(array, _1)\n        let src := add(offset, _1)\n        if gt(add(add(offset, mul(length, _1)), _1), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n    }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        array := allocateMemory(add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20))\n        mstore(array, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array, length), 0x20), 0)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value1, value1) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value1, value1) }\n        let length := calldataload(_2)\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _3 := 0x20\n        dst := add(dst, _3)\n        let src := add(_2, _3)\n        if gt(add(add(_2, mul(length, _3)), _3), dataEnd) { revert(value1, value1) }\n        let i := value1\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_t_address(src))\n            dst := add(dst, _3)\n            src := add(src, _3)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _3))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := tail\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), tail)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_encode_tuple_t_stringliteral_dd3528a478237acd768e367188bd6147b1a4b40dbf3a30af8b1cf6e449468a07__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"ERC1155MetaMintBurnPackedBalance\")\n        mstore(add(headStart, 96), \"Mock: INVALID_METHOD\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_array$_t_address_$dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(mul(length, 0x20), 0x20)\n    }\n}",
                  "id": 33,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100e95760003560e01c8063a3f091f51161008c578063db90e83c11610066578063db90e83c14610221578063e985e9c514610242578063eaec5f8114610255578063f242432a14610268576100e9565b8063a3f091f5146101e8578063bd7a6c41146101fb578063d7a0ad901461020e576100e9565b80632eb2c2d6116100c85780632eb2c2d61461018d578063437ecbe9146101a25780634e1273f4146101b5578063a22cb465146101d5576100e9565b8062fdd58e1461012457806301ffc9a71461014d5780630e89341c1461016d575b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011b90612359565b60405180910390fd5b6101376101323660046120b1565b61027b565b60405161014491906123b6565b60405180910390f35b61016061015b366004612220565b6102d0565b60405161014491906122dd565b61018061017b366004612260565b6102e3565b60405161014491906122e8565b6101a061019b366004611e68565b610436565b005b6101a06101b03660046120da565b610541565b6101c86101c336600461215f565b610551565b6040516101449190612299565b6101a06101e3366004612077565b6107d0565b6101a06101f636600461210c565b610869565b6101a0610209366004611f71565b61087b565b6101a061021c366004611fe2565b610886565b61023461022f366004612260565b610892565b6040516101449291906123bf565b610160610250366004611e36565b61089f565b610137610263366004612278565b6108da565b6101a0610276366004611f0e565b6108ed565b600080600061028984610892565b73ffffffffffffffffffffffffffffffffffffffff871660009081526020818152604080832085845290915290205491935091506102c790826108da565b95945050505050565b60006102db826109f1565b90505b919050565b606060026102f083610a4e565b604051602001808380546001816001161561010002031660029004801561034e5780601f1061032c57610100808354040283529182019161034e565b820191906000526020600020905b81548152906001019060200180831161033a575b5050825160208401908083835b6020831061039857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161035b565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790527f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe50181526005909201905295945050505050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061045f575061045f853361089f565b6104b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c81526020018061257e603c913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612449603d913960400191505060405180910390fd5b61052c85858585610b7a565b61053a858585855a86610f87565b5050505050565b61054c8383836111fe565b505050565b815181516060919081146105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806124106039913960400191505060405180910390fd5b6000806105d0856000815181106105c357fe5b6020026020010151610892565b915091506000806000886000815181106105e657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020549050600083905060608567ffffffffffffffff8111801561065a57600080fd5b50604051908082528060200260200182016040528015610684578160200160208202803683370190505b50905061069183856108da565b8160008151811061069e57fe5b602090810291909101015260015b868110156107c3576106c38982815181106105c357fe5b9096509450828614158061072c57508981815181106106de57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a600183038151811061070b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561079a576000808b838151811061074057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000205493508592505b6107a484866108da565b8282815181106107b057fe5b60209081029190910101526001016106ac565b5098975050505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61087584848484611268565b50505050565b61054c8383836112dc565b61087584848484611485565b6008810491600790911690565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6020810282901c63ffffffff1692915050565b3373ffffffffffffffffffffffffffffffffffffffff861614806109165750610916853361089f565b61096b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806124b96037913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806126746038913960400191505060405180910390fd5b6109e38585858561170f565b61053a858585855a866117b3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c000000000000000000000000000000000000000000000000000000001415610a45575060016102de565b6102db826119a4565b606081610a8f575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526102de565b818060005b8215610aa857600101600a83049250610a94565b60608167ffffffffffffffff81118015610ac157600080fd5b506040519080825280601f01601f191660200182016040528015610aec576020820181803683370190505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8315610b7057600a840660300160f81b82828060019003935081518110610b3657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350610b13565b5095945050505050565b815181518114610bd5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806124f06042913960600191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610c115750600081115b15610de357600080610c29856000815181106105c357fe5b73ffffffffffffffffffffffffffffffffffffffff8916600090815260208181526040808320858452909152812054875193955091935091610c819190849088908590610c7257fe5b60200260200101516001611a01565b73ffffffffffffffffffffffffffffffffffffffff881660009081526020818152604080832087845290915281205487519293509091610cd79190859089908590610cc857fe5b60200260200101516000611a01565b90508360015b86811015610d9157610cf48982815181106105c357fe5b9096509450818614610d635773ffffffffffffffffffffffffffffffffffffffff8b811660009081526020818152604080832086845280835281842098909855928d16825281815282822094825284815282822095909555878152948452808520549290935291909220549084905b610d7484868a8481518110610c7257fe5b9350610d8783868a8481518110610cc857fe5b9250600101610cdd565b505073ffffffffffffffffffffffffffffffffffffffff808a16600090815260208181526040808320888452825280832095909555918a16815280825283812095815294905292209190915550610e80565b60005b81811015610e7e57828181518110610dfa57fe5b6020026020010151610e1f87868481518110610e1257fe5b602002602001015161027b565b1015610e76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806125f76036913960400191505060405180910390fd5b600101610de6565b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610f2c578181015183820152602001610f14565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610f6b578181015183820152602001610f53565b5050505090500194505050505060405180910390a45050505050565b610fa68573ffffffffffffffffffffffffffffffffffffffff16611c14565b156111f65760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561105e578181015183820152602001611046565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561109d578181015183820152602001611085565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156110d95781810151838201526020016110c1565b50505050905090810190601f1680156111065780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561112b57600080fd5b5087f115801561113f573d6000803e3d6000fd5b50505050506040513d602081101561115657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146111f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604c815260200180612532604c913960600191505060405180910390fd5b505b505050505050565b61120b8383836001611c4e565b6040805183815260208101839052815160009273ffffffffffffffffffffffffffffffffffffffff87169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a4505050565b6112758484846000611c4e565b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff87169260009233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a461087560008585855a866117b3565b815181518114611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806125ba603d913960400191505060405180910390fd5b60005b8181101561137d576113758585838151811061135257fe5b602002602001015185848151811061136657fe5b60200260200101516001611c4e565b60010161133a565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561142b578181015183820152602001611413565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561146a578181015183820152602001611452565b5050505090500194505050505060405180910390a450505050565b81518351146114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001806126f1603e913960400191505060405180910390fd5b8251156115ff576000806114f9856000815181106105c357fe5b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091528120548751939550919350916115429190849088908590610cc857fe5b86519091508360015b828110156115c6576115628982815181106105c357fe5b90965094508186146115ab5773ffffffffffffffffffffffffffffffffffffffff8a16600090815260208181526040808320948352939052828120949094558584529220549184905b6115bc84868a8481518110610cc857fe5b935060010161154b565b50505073ffffffffffffffffffffffffffffffffffffffff87166000908152602081815260408083209583529490529290922091909155505b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156116ac578181015183820152602001611694565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156116eb5781810151838201526020016116d3565b5050505090500194505050505060405180910390a461087560008585855a86610f87565b61171c8483836001611c4e565b6117298383836000611c4e565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051808381526020018281526020019250505060405180910390a450505050565b6117d28573ffffffffffffffffffffffffffffffffffffffff16611c14565b156111f65760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561188b578181015183820152602001611873565b50505050905090810190601f1680156118b85780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156118db57600080fd5b5087f11580156118ef573d6000803e3d6000fd5b50505050506040513d602081101561190657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146111f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604781526020018061262d6047913960600191505060405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156119f8575060016102de565b6102db82611cd5565b60006020840263ffffffff82846001811115611a1957fe5b1415611ae75784821b8701925086831015611a7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061272f6032913960400191505060405180910390fd5b64010000000087831c8216860110611ae2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061272f6032913960400191505060405180910390fd5b611c0a565b6001846001811115611af557fe5b1415611bb95784821b8703925086831115611b5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806124866033913960400191505060405180910390fd5b84818389901c161015611ae2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806124866033913960400191505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806126ac6045913960600191505060405180910390fd5b5050949350505050565b6000813f8015801590611c4757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b600080611c5a85610892565b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091529020549193509150611c9a90828686611a01565b73ffffffffffffffffffffffffffffffffffffffff909616600090815260208181526040808320948352939052919091209490945550505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146102de57600080fd5b600082601f830112611d53578081fd5b8135611d66611d61826123f1565b6123cd565b818152915060208083019084810181840286018201871015611d8757600080fd5b60005b84811015611da657813584529282019290820190600101611d8a565b505050505092915050565b600082601f830112611dc1578081fd5b813567ffffffffffffffff811115611dd557fe5b611e0660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123cd565b9150808252836020828501011115611e1d57600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611e48578182fd5b611e5183611d1f565b9150611e5f60208401611d1f565b90509250929050565b600080600080600060a08688031215611e7f578081fd5b611e8886611d1f565b9450611e9660208701611d1f565b9350604086013567ffffffffffffffff80821115611eb2578283fd5b611ebe89838a01611d43565b94506060880135915080821115611ed3578283fd5b611edf89838a01611d43565b93506080880135915080821115611ef4578283fd5b50611f0188828901611db1565b9150509295509295909350565b600080600080600060a08688031215611f25578081fd5b611f2e86611d1f565b9450611f3c60208701611d1f565b93506040860135925060608601359150608086013567ffffffffffffffff811115611f65578182fd5b611f0188828901611db1565b600080600060608486031215611f85578283fd5b611f8e84611d1f565b9250602084013567ffffffffffffffff80821115611faa578384fd5b611fb687838801611d43565b93506040860135915080821115611fcb578283fd5b50611fd886828701611d43565b9150509250925092565b60008060008060808587031215611ff7578384fd5b61200085611d1f565b9350602085013567ffffffffffffffff8082111561201c578485fd5b61202888838901611d43565b9450604087013591508082111561203d578384fd5b61204988838901611d43565b9350606087013591508082111561205e578283fd5b5061206b87828801611db1565b91505092959194509250565b60008060408385031215612089578182fd5b61209283611d1f565b9150602083013580151581146120a6578182fd5b809150509250929050565b600080604083850312156120c3578182fd5b6120cc83611d1f565b946020939093013593505050565b6000806000606084860312156120ee578283fd5b6120f784611d1f565b95602085013595506040909401359392505050565b60008060008060808587031215612121578384fd5b61212a85611d1f565b93506020850135925060408501359150606085013567ffffffffffffffff811115612153578182fd5b61206b87828801611db1565b60008060408385031215612171578081fd5b823567ffffffffffffffff80821115612188578283fd5b818501915085601f83011261219b578283fd5b81356121a9611d61826123f1565b80828252602080830192508086018a8283870289010111156121c9578788fd5b8796505b848710156121f2576121de81611d1f565b8452600196909601959281019281016121cd565b509096508701359350505080821115612209578283fd5b5061221685828601611d43565b9150509250929050565b600060208284031215612231578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611c47578182fd5b600060208284031215612271578081fd5b5035919050565b6000806040838503121561228a578182fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156122d1578351835292840192918401916001016122b5565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b81811015612314578581018301518582016040015282016122f8565b818111156123255783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526034908201527f455243313135354d6574614d696e744275726e5061636b656442616c616e636560408201527f4d6f636b3a20494e56414c49445f4d4554484f44000000000000000000000000606082015260800190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156123e957fe5b604052919050565b600067ffffffffffffffff82111561240557fe5b506020908102019056fe455243313135355061636b656442616c616e63652362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e475448455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20554e444552464c4f57455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e5061636b656442616c616e63652362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20554e444552464c4f57455243313135355061636b656442616c616e6365235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20494e56414c49445f42494e5f57524954455f4f5045524154494f4e455243313135354d696e744275726e5061636b656442616c616e6365235f62617463684d696e743a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a204f564552464c4f57a2646970667358221220480c2653d4b2426828d1969e37ecdc9999ec436e15f4045a8375c757fe71e97064736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3F091F5 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDB90E83C GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDB90E83C EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xEAEC5F81 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x268 JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH4 0xA3F091F5 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0xBD7A6C41 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0xD7A0AD90 EQ PUSH2 0x20E JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x437ECBE9 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1D5 JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x16D JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11B SWAP1 PUSH2 0x2359 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x137 PUSH2 0x132 CALLDATASIZE PUSH1 0x4 PUSH2 0x20B1 JUMP JUMPDEST PUSH2 0x27B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x23B6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x160 PUSH2 0x15B CALLDATASIZE PUSH1 0x4 PUSH2 0x2220 JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x22DD JUMP JUMPDEST PUSH2 0x180 PUSH2 0x17B CALLDATASIZE PUSH1 0x4 PUSH2 0x2260 JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x22E8 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x1E68 JUMP JUMPDEST PUSH2 0x436 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A0 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x20DA JUMP JUMPDEST PUSH2 0x541 JUMP JUMPDEST PUSH2 0x1C8 PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x215F JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x2299 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x1E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2077 JUMP JUMPDEST PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x210C JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F71 JUMP JUMPDEST PUSH2 0x87B JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE2 JUMP JUMPDEST PUSH2 0x886 JUMP JUMPDEST PUSH2 0x234 PUSH2 0x22F CALLDATASIZE PUSH1 0x4 PUSH2 0x2260 JUMP JUMPDEST PUSH2 0x892 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP3 SWAP2 SWAP1 PUSH2 0x23BF JUMP JUMPDEST PUSH2 0x160 PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x89F JUMP JUMPDEST PUSH2 0x137 PUSH2 0x263 CALLDATASIZE PUSH1 0x4 PUSH2 0x2278 JUMP JUMPDEST PUSH2 0x8DA JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x276 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F0E JUMP JUMPDEST PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x289 DUP5 PUSH2 0x892 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x2C7 SWAP1 DUP3 PUSH2 0x8DA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DB DUP3 PUSH2 0x9F1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH2 0x2F0 DUP4 PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x32C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x33A JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x398 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x35B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x2E6A736F6E000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 ADD DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP3 ADD SWAP1 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x45F JUMPI POP PUSH2 0x45F DUP6 CALLER PUSH2 0x89F JUMP JUMPDEST PUSH2 0x4B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x257E PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x520 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2449 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x52C DUP6 DUP6 DUP6 DUP6 PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x53A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xF87 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x54C DUP4 DUP4 DUP4 PUSH2 0x11FE JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 SWAP1 DUP2 EQ PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2410 PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5D0 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x892 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP4 SWAP1 POP PUSH1 0x60 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x684 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x691 DUP4 DUP6 PUSH2 0x8DA JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x69E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x7C3 JUMPI PUSH2 0x6C3 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP3 DUP7 EQ ISZERO DUP1 PUSH2 0x72C JUMPI POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x6DE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x70B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x79A JUMPI PUSH1 0x0 DUP1 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x740 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP4 POP DUP6 SWAP3 POP JUMPDEST PUSH2 0x7A4 DUP5 DUP7 PUSH2 0x8DA JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7B0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x6AC JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x875 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1268 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x54C DUP4 DUP4 DUP4 PUSH2 0x12DC JUMP JUMPDEST PUSH2 0x875 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1485 JUMP JUMPDEST PUSH1 0x8 DUP2 DIV SWAP2 PUSH1 0x7 SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL DUP3 SWAP1 SHR PUSH4 0xFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x916 JUMPI POP PUSH2 0x916 DUP6 CALLER PUSH2 0x89F JUMP JUMPDEST PUSH2 0x96B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24B9 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x9D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2674 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9E3 DUP6 DUP6 DUP6 DUP6 PUSH2 0x170F JUMP JUMPDEST PUSH2 0x53A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x17B3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xA45 JUMPI POP PUSH1 0x1 PUSH2 0x2DE JUMP JUMPDEST PUSH2 0x2DB DUP3 PUSH2 0x19A4 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xA8F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2DE JUMP JUMPDEST DUP2 DUP1 PUSH1 0x0 JUMPDEST DUP3 ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP4 DIV SWAP3 POP PUSH2 0xA94 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xAEC JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0xB70 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0xB36 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0xB13 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0xBD5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24F0 PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xC11 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xDE3 JUMPI PUSH1 0x0 DUP1 PUSH2 0xC29 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0xC81 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xC72 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1A01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0xCD7 SWAP2 SWAP1 DUP6 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH2 0xCC8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH2 0x1A01 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xD91 JUMPI PUSH2 0xCF4 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0xD63 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SWAP9 SWAP1 SWAP9 SSTORE SWAP3 DUP14 AND DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP5 DUP3 MSTORE DUP5 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP8 DUP2 MSTORE SWAP5 DUP5 MSTORE DUP1 DUP6 KECCAK256 SLOAD SWAP3 SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 SLOAD SWAP1 DUP5 SWAP1 JUMPDEST PUSH2 0xD74 DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC72 JUMPI INVALID JUMPDEST SWAP4 POP PUSH2 0xD87 DUP4 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCC8 JUMPI INVALID JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xCDD JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP2 DUP11 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP4 DUP2 KECCAK256 SWAP6 DUP2 MSTORE SWAP5 SWAP1 MSTORE SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP PUSH2 0xE80 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE7E JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xDFA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xE1F DUP8 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE12 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x27B JUMP JUMPDEST LT ISZERO PUSH2 0xE76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x25F7 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0xDE6 JUMP JUMPDEST POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF2C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF14 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF53 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFA6 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST ISZERO PUSH2 0x11F6 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x105E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1046 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x109D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1085 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10D9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10C1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1106 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x112B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x113F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2532 PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x120B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH2 0x1275 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 PUSH1 0x0 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x875 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x17B3 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1337 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x25BA PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x137D JUMPI PUSH2 0x1375 DUP6 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1352 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1366 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x133A JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x142B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1413 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x146A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1452 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x14DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26F1 PUSH1 0x3E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x15FF JUMPI PUSH1 0x0 DUP1 PUSH2 0x14F9 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0x1542 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xCC8 JUMPI INVALID JUMPDEST DUP7 MLOAD SWAP1 SWAP2 POP DUP4 PUSH1 0x1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x15C6 JUMPI PUSH2 0x1562 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0x15AB JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE DUP3 DUP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP6 DUP5 MSTORE SWAP3 KECCAK256 SLOAD SWAP2 DUP5 SWAP1 JUMPDEST PUSH2 0x15BC DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCC8 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x1 ADD PUSH2 0x154B JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP6 DUP4 MSTORE SWAP5 SWAP1 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1694 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x875 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xF87 JUMP JUMPDEST PUSH2 0x171C DUP5 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH2 0x1729 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1C4E JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x17D2 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST ISZERO PUSH2 0x11F6 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x188B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1873 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18B8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x18EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x262D PUSH1 0x47 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x19F8 JUMPI POP PUSH1 0x1 PUSH2 0x2DE JUMP JUMPDEST PUSH2 0x2DB DUP3 PUSH2 0x1CD5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP5 MUL PUSH4 0xFFFFFFFF DUP3 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1A19 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1AE7 JUMPI DUP5 DUP3 SHL DUP8 ADD SWAP3 POP DUP7 DUP4 LT ISZERO PUSH2 0x1A7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x272F PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH5 0x100000000 DUP8 DUP4 SHR DUP3 AND DUP7 ADD LT PUSH2 0x1AE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x272F PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C0A JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1AF5 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1BB9 JUMPI DUP5 DUP3 SHL DUP8 SUB SWAP3 POP DUP7 DUP4 GT ISZERO PUSH2 0x1B5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2486 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 DUP2 DUP4 DUP10 SWAP1 SHR AND LT ISZERO PUSH2 0x1AE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2486 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26AC PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C47 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 EQ ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C5A DUP6 PUSH2 0x892 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x1C9A SWAP1 DUP3 DUP7 DUP7 PUSH2 0x1A01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D53 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D66 PUSH2 0x1D61 DUP3 PUSH2 0x23F1 JUMP JUMPDEST PUSH2 0x23CD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1D87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DA6 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1D8A JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DC1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DD5 JUMPI INVALID JUMPDEST PUSH2 0x1E06 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x23CD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1E1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E48 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1E51 DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP2 POP PUSH2 0x1E5F PUSH1 0x20 DUP5 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1E7F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1E88 DUP7 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 POP PUSH2 0x1E96 PUSH1 0x20 DUP8 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1EB2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1EBE DUP10 DUP4 DUP11 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1ED3 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1EDF DUP10 DUP4 DUP11 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1EF4 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1F01 DUP9 DUP3 DUP10 ADD PUSH2 0x1DB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1F25 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1F2E DUP7 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 POP PUSH2 0x1F3C PUSH1 0x20 DUP8 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F65 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1F01 DUP9 DUP3 DUP10 ADD PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F85 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1F8E DUP5 PUSH2 0x1D1F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1FAA JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1FB6 DUP8 DUP4 DUP9 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1FCB JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1FD8 DUP7 DUP3 DUP8 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1FF7 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2000 DUP6 PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x201C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2028 DUP9 DUP4 DUP10 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x203D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2049 DUP9 DUP4 DUP10 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x205E JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x206B DUP8 DUP3 DUP9 ADD PUSH2 0x1DB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2089 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2092 DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x20A6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20C3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x20CC DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x20EE JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x20F7 DUP5 PUSH2 0x1D1F JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2121 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x212A DUP6 PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2153 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x206B DUP8 DUP3 DUP9 ADD PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2171 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2188 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x219B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21A9 PUSH2 0x1D61 DUP3 PUSH2 0x23F1 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x21C9 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x21F2 JUMPI PUSH2 0x21DE DUP2 PUSH2 0x1D1F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x21CD JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x2209 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2216 DUP6 DUP3 DUP7 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2231 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x1C47 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2271 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x228A JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x22D1 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x22B5 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2314 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x22F8 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2325 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D6574614D696E744275726E5061636B656442616C616E6365 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4D6F636B3A20494E56414C49445F4D4554484F44000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x23E9 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2405 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH13 0x616E63654F6642617463683A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20554E444552464C4F JUMPI GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20494E56414C49445F4152524159535F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E5061636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH21 0x63684275726E3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20554E444552464C4F57455243313135 CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20494E56414C49445F TIMESTAMP 0x49 0x4E 0x5F JUMPI MSTORE 0x49 SLOAD GASLIMIT 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x49 0x4F 0x4E GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E5061636B PUSH6 0x6442616C616E PUSH4 0x65235F62 PUSH2 0x7463 PUSH9 0x4D696E743A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A204F564552464C4F57 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x48 0xC 0x26 MSTORE8 0xD4 0xB2 TIMESTAMP PUSH9 0x28D1969E37ECDC9999 0xEC NUMBER PUSH15 0x15F4045A8375C757FE71E97064736F PUSH13 0x63430007040033000000000000 ",
              "sourceMap": "182:74:5:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2953:62:20;;;;;;;;;;:::i;:::-;;;;;;;;9699:261:26;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;884:198:20;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;840:155:23:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3444:547:26:-;;;;;;:::i;:::-;;:::i;:::-;;2330:111:20;;;;;;:::i;:::-;;:::i;10318:1013:26:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8707:230::-;;;;;;:::i;:::-;;:::i;1448:134:20:-;;;;;;:::i;:::-;;:::i;2657:143::-;;;;;;:::i;:::-;;:::i;1847:166::-;;;;;;:::i;:::-;;:::i;14001:189:26:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;9199:160::-;;;;;;:::i;:::-;;:::i;14447:432::-;;;;;;:::i;:::-;;:::i;2360:598::-;;;;;;:::i;:::-;;:::i;9699:261::-;9781:7;9798:11;9815:13;9881:18;9895:3;9881:13;:18::i;:::-;9926:16;;;:8;:16;;;;;;;;;;;:21;;;;;;;;;9866:33;;-1:-1:-1;9866:33:26;-1:-1:-1;9912:43:26;;9866:33;9912:13;:43::i;:::-;9905:50;9699:261;-1:-1:-1;;;;;9699:261:26:o;884:198:20:-;1021:4;1040:37;1064:12;1040:23;:37::i;:::-;1033:44;;884:198;;;;:::o;840:155:23:-;896:13;948:15;965:14;975:3;965:9;:14::i;:::-;931:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;931:58:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;931:58:23;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;840:155:23:o;3444:547:26:-;3630:10;:19;;;;;3629:60;;;3654:35;3671:5;3678:10;3654:16;:35::i;:::-;3621:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3768:17;;;3760:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3857:50;3880:5;3887:3;3892:4;3898:8;3857:22;:50::i;:::-;3913:73;3941:5;3948:3;3953:4;3959:8;3969:9;3980:5;3913:27;:73::i;:::-;3444:547;;;;;:::o;2330:111:20:-;2411:25;2417:5;2424:3;2429:6;2411:5;:25::i;:::-;2330:111;;;:::o;10318:1013:26:-;10470:14;;10510:11;;10425:16;;10470:14;10498:23;;10490:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10611:11;10624:13;10641:22;10655:4;10660:1;10655:7;;;;;;;;;;;;;;10641:13;:22::i;:::-;10610:53;;;;10669:19;10691:8;:20;10700:7;10708:1;10700:10;;;;;;;;;;;;;;10691:20;;;;;;;;;;;;;;;:25;10712:3;10691:25;;;;;;;;;;;;10669:47;;10722:16;10741:3;10722:22;;10773:30;10820:8;10806:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10806:23:26;;10773:56;;10854:33;10868:11;10881:5;10854:13;:33::i;:::-;10835:13;10849:1;10835:16;;;;;;;;;;;;;;;;;:52;10955:1;10938:362;10962:8;10958:1;:12;10938:362;;;11000:22;11014:4;11019:1;11014:7;;;;;;;11000:22;10985:37;;-1:-1:-1;10985:37:26;-1:-1:-1;11104:15:26;;;;;:45;;;11139:7;11147:1;11139:10;;;;;;;;;;;;;;11123:26;;:7;11133:1;11131;:3;11123:12;;;;;;;;;;;;;;:26;;;;11104:45;11100:133;;;11175:8;:20;11184:7;11192:1;11184:10;;;;;;;;;;;;;;11175:20;;;;;;;;;;;;;;;:25;11196:3;11175:25;;;;;;;;;;;;11161:39;;11221:3;11210:14;;11100:133;11260:33;11274:11;11287:5;11260:13;:33::i;:::-;11241:13;11255:1;11241:16;;;;;;;;;;;;;;;;;:52;10972:3;;10938:362;;;-1:-1:-1;11313:13:26;10318:1013;-1:-1:-1;;;;;;;;10318:1013:26:o;8707:230::-;8839:10;8829:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;8884:48;;;;;;;8829:32;;8839:10;8884:48;;;;;;;;;;;8707:230;;:::o;1448:134:20:-;1547:30;1553:3;1558;1563:6;1571:5;1547;:30::i;:::-;1448:134;;;;:::o;2657:143::-;2763:32;2774:5;2781:4;2787:7;2763:10;:32::i;1847:166::-;1971:37;1982:3;1987:4;1993:7;2002:5;1971:10;:37::i;14001:189:26:-;1505:19;14104:21;;;14139;;;;;14001:189::o;9199:160::-;9326:17;;;;9294:15;9326:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;9199:160::o;14447:432::-;1395:2;14806:22;;14842:24;;;14725:33;14841;14447:432;;;;:::o;2360:598::-;2521:10;:19;;;;;2520:60;;;2545:35;2562:5;2569:10;2545:16;:35::i;:::-;2512:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:17;;;2646:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2838:43;2856:5;2863:3;2868;2873:7;2838:17;:43::i;:::-;2887:66;2910:5;2917:3;2922;2927:7;2936:9;2947:5;2887:22;:66::i;2054:234:23:-;2140:4;2156:50;;;2172:34;2156:50;2152:82;;;-1:-1:-1;2223:4:23;2216:11;;2152:82;2246:37;2270:12;2246:23;:37::i;2518:513::-;2572:27;2611:7;2607:38;;-1:-1:-1;2628:10:23;;;;;;;;;;;;;;;;;;;2607:38;2663:2;;2651:9;2737:50;2744:6;;2737:50;;2760:5;;2778:2;2773:7;;;;2737:50;;;2793:17;2823:3;2813:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2813:14:23;-1:-1:-1;2793:34:23;-1:-1:-1;2845:7:23;;;2892:84;2899:7;;2892:84;;2949:2;2944;:7;2939:2;:12;2928:25;;2916:4;2921:3;;;;;;;2916:9;;;;;;;;;;;:37;;;;;;;;;;-1:-1:-1;2967:2:23;2961:8;;;;2892:84;;;-1:-1:-1;3021:4:23;2518:513;-1:-1:-1;;;;;2518:513:23:o;5742:1939:26:-;5893:11;;5964:15;;5951:28;;5943:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6070:3;6061:12;;:5;:12;;;;:29;;;;;6089:1;6077:9;:13;6061:29;6057:1537;;;6169:11;6182:13;6199:22;6213:4;6218:1;6213:7;;;;;;;6199:22;6345:15;;;6307;6345;;;;;;;;;;;:20;;;;;;;;;6374:11;;6168:53;;-1:-1:-1;6168:53:26;;-1:-1:-1;6307:15:26;6325:77;;6345:20;6168:53;;6374:8;;6307:15;;6374:11;;;;;;;;;;6387:14;6325:19;:77::i;:::-;6446:13;;;6410;6446;;;;;;;;;;;:18;;;;;;;;;6473:11;;6307:95;;-1:-1:-1;6410:13:26;;6426:75;;6446:18;6466:5;;6473:8;;6410:13;;6473:11;;;;;;;;;;6486:14;6426:19;:75::i;:::-;6410:91;-1:-1:-1;6554:3:26;6583:1;6566:649;6590:9;6586:1;:13;6566:649;;;6631:22;6645:4;6650:1;6645:7;;;;;;;6631:22;6616:37;;-1:-1:-1;6616:37:26;-1:-1:-1;6690:14:26;;;6686:323;;6770:15;;;;:8;:15;;;;;;;;;;;:24;;;;;;;;;:34;;;;6816:13;;;;;;;;;;;:22;;;;;;;;;:30;;;;6869:20;;;;;;;;;;6909:18;;;;;;;;;;6869:20;;6686:323;7062:64;7082:7;7091:5;7098:8;7107:1;7098:11;;;;;;;7062:64;7052:74;;7144:62;7164:5;7171;7178:8;7187:1;7178:11;;;;;;;7144:62;7136:70;-1:-1:-1;6601:3:26;;6566:649;;;-1:-1:-1;;7271:15:26;;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:30;;;;7309:13;;;;;;;;;;;:18;;;;;;;;:26;;;;-1:-1:-1;6057:1537:26;;;7427:9;7422:166;7446:9;7442:1;:13;7422:166;;;7509:8;7518:1;7509:11;;;;;;;;;;;;;;7480:25;7490:5;7497:4;7502:1;7497:7;;;;;;;;;;;;;;7480:9;:25::i;:::-;:40;;7472:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7457:3;;7422:166;;;;6057:1537;7656:3;7623:53;;7649:5;7623:53;;7637:10;7623:53;;;7661:4;7667:8;7623:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5742:1939;;;;;:::o;7794:516::-;8015:16;:3;:14;;;:16::i;:::-;8011:295;;;8041:13;8079:3;8057:49;;;8112:9;8123:10;8135:5;8142:4;8148:8;8158:5;8057:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8057:107:26;;-1:-1:-1;8180:38:26;;;8190:28;8180:38;8172:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8011:295;;7794:516;;;;;;:::o;3306:255:25:-;3412:53;3429:5;3436:3;3441:7;3450:14;3412:16;:53::i;:::-;3495:61;;;;;;;;;;;;;;3537:3;;3495:61;;;;3510:10;;3495:61;;;;;;;;;;;3306:255;;;:::o;727:428::-;844:53;861:3;868;873:7;882:14;844:16;:53::i;:::-;954:59;;;;;;;;;;;;;;;;;;989:3;;969:10;;954:59;;;;;;;;;;;1077:73;1108:3;1114;1119;1124:7;1133:9;1144:5;1077:22;:73::i;4124:589::-;4282:11;;4316:15;;4307:24;;4299:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4438:9;4433:173;4457:5;4453:1;:9;4433:173;;;4509:63;4526:5;4535:4;4540:1;4535:7;;;;;;;;;;;;;;4544:8;4553:1;4544:11;;;;;;;;;;;;;;4557:14;4509:16;:63::i;:::-;4464:3;;4433:173;;;;4687:3;4646:62;;4672:5;4646:62;;4660:10;4646:62;;;4693:4;4699:8;4646:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:589;;;;:::o;1449:1512::-;1596:8;:15;1581:4;:11;:30;1573:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1689:11;;:15;1685:1036;;1783:11;1796:13;1813:22;1827:4;1832:1;1827:7;;;;;;;1813:22;1957:13;;;1921;1957;;;;;;;;;;;:18;;;;;;;;;1984:11;;1782:53;;-1:-1:-1;1782:53:25;;-1:-1:-1;1921:13:25;1937:75;;1957:18;1782:53;;1984:8;;1921:13;;1984:11;;;1937:75;2080:11;;1921:91;;-1:-1:-1;2144:3:25;2173:1;2156:476;2180:9;2176:1;:13;2156:476;;;2221:22;2235:4;2240:1;2235:7;;;;;;;2221:22;2206:37;;-1:-1:-1;2206:37:25;-1:-1:-1;2280:14:25;;;2276:234;;2360:13;;;:8;:13;;;;;;;;;;;:22;;;;;;;;;:30;;;;2410:18;;;;;;;;;2276:234;2561:62;2581:5;2588;2595:8;2604:1;2595:11;;;;;;;2561:62;2553:70;-1:-1:-1;2191:3:25;;2156:476;;;-1:-1:-1;;;2688:13:25;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;;:26;;;;-1:-1:-1;1685:1036:25;2792:3;2752:60;;2786:3;2752:60;;2766:10;2752:60;;;2797:4;2803:8;2752:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2876:80;2912:3;2918;2923:4;2929:8;2939:9;2950:5;2876:27;:80::i;4381:385:26:-;4509:53;4526:5;4533:3;4538:7;4547:14;4509:16;:53::i;:::-;4599;4616:3;4623;4628:7;4637:14;4599:16;:53::i;:::-;4743:3;4709:52;;4736:5;4709:52;;4724:10;4709:52;;;4748:3;4753:7;4709:52;;;;;;;;;;;;;;;;;;;;;;;;4381:385;;;;:::o;4874:468::-;5066:16;:3;:14;;;:16::i;:::-;5062:276;;;5092:13;5130:3;5108:44;;;5157:9;5168:10;5180:5;5187:3;5192:7;5201:5;5108:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5108:99:26;;-1:-1:-1;5223:32:26;;;5233:22;5223:32;5215:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15216:226;15302:4;15318:42;;;15334:26;15318:42;15314:74;;;-1:-1:-1;15377:4:26;15370:11;;15314:74;15400:37;15424:12;15400:23;:37::i;12664:1162::-;12796:20;1395:2;12842:22;;12885:33;12796:20;12929:10;:28;;;;;;;;;12925:871;;;12996:16;;;12982:31;;;-1:-1:-1;13029:26:26;;;;13021:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13178:16;13137:19;;;13136:28;;13135:40;;:59;13118:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12925:871;;;13331:14;13317:10;:28;;;;;;;;;13313:483;;;13384:16;;;13370:31;;;-1:-1:-1;13417:26:26;;;;13409:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13558:7;13549:4;13540:5;13526:10;:19;;13525:28;13524:41;;13507:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13313:483;13693:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13313:483;13802:19;;12664:1162;;;;;;:::o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;890:43;882:52;541:398;-1:-1:-1;;;541:398:27:o;11845:352:26:-;11963:11;11980:13;12047:18;12061:3;12047:13;:18::i;:::-;12140;;;:8;:18;;;;;;;;;;;:23;;;;;;;;;12032:33;;-1:-1:-1;12032:33:26;-1:-1:-1;12120:72:26;;12032:33;12172:7;12181:10;12120:19;:72::i;:::-;12094:18;;;;:8;:18;;;;;;;;;;;:23;;;;;;;;;;:98;;;;-1:-1:-1;;;;11845:352:26:o;259:148:28:-;355:47;;;371:31;355:47;259:148;;;:::o;14:198:33:-;84:20;;144:42;133:54;;123:65;;113:2;;202:1;199;192:12;217:692;;330:3;323:4;315:6;311:17;307:27;297:2;;352:5;345;338:20;297:2;396:6;383:20;421:69;436:53;482:6;436:53;:::i;:::-;421:69;:::i;:::-;524:21;;;412:78;-1:-1:-1;564:4:33;584:14;;;;618:15;;;664;;;652:28;;648:37;;645:46;-1:-1:-1;642:2:33;;;704:1;701;694:12;642:2;726:1;736:167;750:6;747:1;744:13;736:167;;;811:17;;799:30;;849:12;;;;881;;;;772:1;765:9;736:167;;;740:3;;;;;287:622;;;;:::o;914:580::-;;1011:3;1004:4;996:6;992:17;988:27;978:2;;1033:5;1026;1019:20;978:2;1077:6;1064:20;1107:18;1099:6;1096:30;1093:2;;;1129:9;1093:2;1158:117;1269:4;1200:66;1193:4;1185:6;1181:17;1177:90;1173:101;1158:117;:::i;:::-;1149:126;;1298:6;1291:5;1284:21;1352:3;1345:4;1336:6;1328;1324:19;1320:30;1317:39;1314:2;;;1369:1;1366;1359:12;1314:2;1432:6;1425:4;1417:6;1413:17;1406:4;1399:5;1395:16;1382:57;1486:1;1459:18;;;1479:4;1455:29;1448:40;1463:5;968:526;-1:-1:-1;;968:526:33:o;1499:274::-;;;1628:2;1616:9;1607:7;1603:23;1599:32;1596:2;;;1649:6;1641;1634:22;1596:2;1677:31;1698:9;1677:31;:::i;:::-;1667:41;;1727:40;1763:2;1752:9;1748:18;1727:40;:::i;:::-;1717:50;;1586:187;;;;;:::o;1778:1001::-;;;;;;2017:3;2005:9;1996:7;1992:23;1988:33;1985:2;;;2039:6;2031;2024:22;1985:2;2067:31;2088:9;2067:31;:::i;:::-;2057:41;;2117:40;2153:2;2142:9;2138:18;2117:40;:::i;:::-;2107:50;;2208:2;2197:9;2193:18;2180:32;2231:18;2272:2;2264:6;2261:14;2258:2;;;2293:6;2285;2278:22;2258:2;2321:67;2380:7;2371:6;2360:9;2356:22;2321:67;:::i;:::-;2311:77;;2441:2;2430:9;2426:18;2413:32;2397:48;;2470:2;2460:8;2457:16;2454:2;;;2491:6;2483;2476:22;2454:2;2519:69;2580:7;2569:8;2558:9;2554:24;2519:69;:::i;:::-;2509:79;;2641:3;2630:9;2626:19;2613:33;2597:49;;2671:2;2661:8;2658:16;2655:2;;;2692:6;2684;2677:22;2655:2;;2720:53;2765:7;2754:8;2743:9;2739:24;2720:53;:::i;:::-;2710:63;;;1975:804;;;;;;;;:::o;2784:632::-;;;;;;2973:3;2961:9;2952:7;2948:23;2944:33;2941:2;;;2995:6;2987;2980:22;2941:2;3023:31;3044:9;3023:31;:::i;:::-;3013:41;;3073:40;3109:2;3098:9;3094:18;3073:40;:::i;:::-;3063:50;;3160:2;3149:9;3145:18;3132:32;3122:42;;3211:2;3200:9;3196:18;3183:32;3173:42;;3266:3;3255:9;3251:19;3238:33;3294:18;3286:6;3283:30;3280:2;;;3331:6;3323;3316:22;3280:2;3359:51;3402:7;3393:6;3382:9;3378:22;3359:51;:::i;3421:713::-;;;;3617:2;3605:9;3596:7;3592:23;3588:32;3585:2;;;3638:6;3630;3623:22;3585:2;3666:31;3687:9;3666:31;:::i;:::-;3656:41;;3748:2;3737:9;3733:18;3720:32;3771:18;3812:2;3804:6;3801:14;3798:2;;;3833:6;3825;3818:22;3798:2;3861:67;3920:7;3911:6;3900:9;3896:22;3861:67;:::i;:::-;3851:77;;3981:2;3970:9;3966:18;3953:32;3937:48;;4010:2;4000:8;3997:16;3994:2;;;4031:6;4023;4016:22;3994:2;;4059:69;4120:7;4109:8;4098:9;4094:24;4059:69;:::i;:::-;4049:79;;;3575:559;;;;;:::o;4139:924::-;;;;;4361:3;4349:9;4340:7;4336:23;4332:33;4329:2;;;4383:6;4375;4368:22;4329:2;4411:31;4432:9;4411:31;:::i;:::-;4401:41;;4493:2;4482:9;4478:18;4465:32;4516:18;4557:2;4549:6;4546:14;4543:2;;;4578:6;4570;4563:22;4543:2;4606:67;4665:7;4656:6;4645:9;4641:22;4606:67;:::i;:::-;4596:77;;4726:2;4715:9;4711:18;4698:32;4682:48;;4755:2;4745:8;4742:16;4739:2;;;4776:6;4768;4761:22;4739:2;4804:69;4865:7;4854:8;4843:9;4839:24;4804:69;:::i;:::-;4794:79;;4926:2;4915:9;4911:18;4898:32;4882:48;;4955:2;4945:8;4942:16;4939:2;;;4976:6;4968;4961:22;4939:2;;5004:53;5049:7;5038:8;5027:9;5023:24;5004:53;:::i;:::-;4994:63;;;4319:744;;;;;;;:::o;5068:369::-;;;5194:2;5182:9;5173:7;5169:23;5165:32;5162:2;;;5215:6;5207;5200:22;5162:2;5243:31;5264:9;5243:31;:::i;:::-;5233:41;;5324:2;5313:9;5309:18;5296:32;5371:5;5364:13;5357:21;5350:5;5347:32;5337:2;;5398:6;5390;5383:22;5337:2;5426:5;5416:15;;;5152:285;;;;;:::o;5442:266::-;;;5571:2;5559:9;5550:7;5546:23;5542:32;5539:2;;;5592:6;5584;5577:22;5539:2;5620:31;5641:9;5620:31;:::i;:::-;5610:41;5698:2;5683:18;;;;5670:32;;-1:-1:-1;;;5529:179:33:o;5713:334::-;;;;5859:2;5847:9;5838:7;5834:23;5830:32;5827:2;;;5880:6;5872;5865:22;5827:2;5908:31;5929:9;5908:31;:::i;:::-;5898:41;5986:2;5971:18;;5958:32;;-1:-1:-1;6037:2:33;6022:18;;;6009:32;;5817:230;-1:-1:-1;;;5817:230:33:o;6052:555::-;;;;;6224:3;6212:9;6203:7;6199:23;6195:33;6192:2;;;6246:6;6238;6231:22;6192:2;6274:31;6295:9;6274:31;:::i;:::-;6264:41;;6352:2;6341:9;6337:18;6324:32;6314:42;;6403:2;6392:9;6388:18;6375:32;6365:42;;6458:2;6447:9;6443:18;6430:32;6485:18;6477:6;6474:30;6471:2;;;6522:6;6514;6507:22;6471:2;6550:51;6593:7;6584:6;6573:9;6569:22;6550:51;:::i;6612:1246::-;;;6791:2;6779:9;6770:7;6766:23;6762:32;6759:2;;;6812:6;6804;6797:22;6759:2;6857:9;6844:23;6886:18;6927:2;6919:6;6916:14;6913:2;;;6948:6;6940;6933:22;6913:2;6991:6;6980:9;6976:22;6966:32;;7036:7;7029:4;7025:2;7021:13;7017:27;7007:2;;7063:6;7055;7048:22;7007:2;7108;7095:16;7131:69;7146:53;7192:6;7146:53;:::i;7131:69::-;7222:3;7246:6;7241:3;7234:19;7272:4;7301:2;7296:3;7292:12;7285:19;;7332:2;7328;7324:11;7385:7;7380:2;7374;7366:6;7362:15;7358:2;7354:24;7350:33;7347:46;7344:2;;;7411:6;7403;7396:22;7344:2;7438:6;7429:15;;7453:175;7467:6;7464:1;7461:13;7453:175;;;7528:25;7549:3;7528:25;:::i;:::-;7516:38;;7489:1;7482:9;;;;;7574:12;;;;7606;;7453:175;;;-1:-1:-1;7647:5:33;;-1:-1:-1;7690:18:33;;7677:32;;-1:-1:-1;;;7721:16:33;;;7718:2;;;7755:6;7747;7740:22;7718:2;;7783:69;7844:7;7833:8;7822:9;7818:24;7783:69;:::i;:::-;7773:79;;;6749:1109;;;;;:::o;7863:352::-;;7974:2;7962:9;7953:7;7949:23;7945:32;7942:2;;;7995:6;7987;7980:22;7942:2;8039:9;8026:23;8089:66;8082:5;8078:78;8071:5;8068:89;8058:2;;8176:6;8168;8161:22;8220:190;;8332:2;8320:9;8311:7;8307:23;8303:32;8300:2;;;8353:6;8345;8338:22;8300:2;-1:-1:-1;8381:23:33;;8290:120;-1:-1:-1;8290:120:33:o;8415:258::-;;;8544:2;8532:9;8523:7;8519:23;8515:32;8512:2;;;8565:6;8557;8550:22;8512:2;-1:-1:-1;;8593:23:33;;;8663:2;8648:18;;;8635:32;;-1:-1:-1;8502:171:33:o;8678:635::-;8849:2;8901:21;;;8971:13;;8874:18;;;8993:22;;;8678:635;;8849:2;9072:15;;;;9046:2;9031:18;;;8678:635;9118:169;9132:6;9129:1;9126:13;9118:169;;;9193:13;;9181:26;;9262:15;;;;9227:12;;;;9154:1;9147:9;9118:169;;;-1:-1:-1;9304:3:33;;8829:484;-1:-1:-1;;;;;;8829:484:33:o;9318:187::-;9483:14;;9476:22;9458:41;;9446:2;9431:18;;9413:92::o;9510:662::-;;9651:2;9680;9669:9;9662:21;9712:6;9706:13;9755:6;9750:2;9739:9;9735:18;9728:34;9780:4;9793:140;9807:6;9804:1;9801:13;9793:140;;;9902:14;;;9898:23;;9892:30;9868:17;;;9887:2;9864:26;9857:66;9822:10;;9793:140;;;9951:6;9948:1;9945:13;9942:2;;;10021:4;10016:2;10007:6;9996:9;9992:22;9988:31;9981:45;9942:2;-1:-1:-1;10088:2:33;10076:15;10093:66;10072:88;10057:104;;;;10163:2;10053:113;;9631:541;-1:-1:-1;;;9631:541:33:o;10177:416::-;10379:2;10361:21;;;10418:2;10398:18;;;10391:30;10457:34;10452:2;10437:18;;10430:62;10528:22;10523:2;10508:18;;10501:50;10583:3;10568:19;;10351:242::o;10598:177::-;10744:25;;;10732:2;10717:18;;10699:76::o;10780:248::-;10954:25;;;11010:2;10995:18;;10988:34;10942:2;10927:18;;10909:119::o;11033:242::-;11103:2;11097:9;11133:17;;;11180:18;11165:34;;11201:22;;;11162:62;11159:2;;;11227:9;11159:2;11254;11247:22;11077:198;;-1:-1:-1;11077:198:33:o;11280:183::-;;11379:18;11371:6;11368:30;11365:2;;;11401:9;11365:2;-1:-1:-1;11452:4:33;11433:17;;;11429:28;;11355:108::o"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "batchBurnMock(address,uint256[],uint256[])": "bd7a6c41",
              "batchMintMock(address,uint256[],uint256[],bytes)": "d7a0ad90",
              "burnMock(address,uint256,uint256)": "437ecbe9",
              "getIDBinIndex(uint256)": "db90e83c",
              "getValueInBin(uint256,uint256)": "eaec5f81",
              "isApprovedForAll(address,address)": "e985e9c5",
              "mintMock(address,uint256,uint256,bytes)": "a3f091f5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "contracts/mocks/ERC20TokenMock.sol": {
        "ERC20TokenMock": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_address",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "mockMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506107ae806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80633950935111610076578063a457c2d71161005b578063a457c2d7146101f9578063a9059cbb14610232578063dd62ed3e1461026b576100a3565b8063395093511461018d57806370a08231146101c6576100a3565b8063095ea7b3146100a857806318160ddd146100f557806323b872dd1461010f578063378934b414610152575b600080fd5b6100e1600480360360408110156100be57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356102a6565b604080519115158252519081900360200190f35b6100fd6102bc565b60408051918252519081900360200190f35b6100e16004803603606081101561012557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356102c2565b61018b6004803603604081101561016857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610320565b005b6100e1600480360360408110156101a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561032e565b6100fd600480360360208110156101dc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610371565b6100e16004803603604081101561020f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610399565b6100e16004803603604081101561024857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103dc565b6100fd6004803603604081101561028157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166103e9565b60006102b3338484610421565b50600192915050565b60025490565b60006102cf8484846104d0565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461031691869161031190866105c3565b610421565b5060019392505050565b61032a828261063a565b5050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102b391859061031190866106fd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102b391859061031190866105c3565b60006102b33384846104d0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff821661044157600080fd5b73ffffffffffffffffffffffffffffffffffffffff831661046157600080fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff82166104f057600080fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205461052090826105c3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461055c90826106fd565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561063457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b73ffffffffffffffffffffffffffffffffffffffff821661065a57600080fd5b60025461066790826106fd565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461069a90826106fd565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101561077157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b939250505056fea26469706673582212200168d4831e08a1465e6bf1447880568d9dcb4ee0478dbd79b86defe0db0cb9dd64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7AE DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x26B JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1C6 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x378934B4 EQ PUSH2 0x152 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2C2 JUMP JUMPDEST PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x320 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x32E JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x371 JUMP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x399 JUMP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3DC JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 CALLER DUP5 DUP5 PUSH2 0x421 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF DUP5 DUP5 DUP5 PUSH2 0x4D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x316 SWAP2 DUP7 SWAP2 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x5C3 JUMP JUMPDEST PUSH2 0x421 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x32A DUP3 DUP3 PUSH2 0x63A JUMP JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x2B3 SWAP2 DUP6 SWAP1 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x2B3 SWAP2 DUP6 SWAP1 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 CALLER DUP5 DUP5 PUSH2 0x4D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x520 SWAP1 DUP3 PUSH2 0x5C3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x55C SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x634 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x667 SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x69A SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x771 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD PUSH9 0xD4831E08A1465E6BF1 DIFFICULTY PUSH25 0x80568D9DCB4EE0478DBD79B86DEFE0DB0CB9DD64736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "120:41:6:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100a35760003560e01c80633950935111610076578063a457c2d71161005b578063a457c2d7146101f9578063a9059cbb14610232578063dd62ed3e1461026b576100a3565b8063395093511461018d57806370a08231146101c6576100a3565b8063095ea7b3146100a857806318160ddd146100f557806323b872dd1461010f578063378934b414610152575b600080fd5b6100e1600480360360408110156100be57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356102a6565b604080519115158252519081900360200190f35b6100fd6102bc565b60408051918252519081900360200190f35b6100e16004803603606081101561012557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356102c2565b61018b6004803603604081101561016857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610320565b005b6100e1600480360360408110156101a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561032e565b6100fd600480360360208110156101dc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610371565b6100e16004803603604081101561020f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610399565b6100e16004803603604081101561024857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103dc565b6100fd6004803603604081101561028157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166103e9565b60006102b3338484610421565b50600192915050565b60025490565b60006102cf8484846104d0565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461031691869161031190866105c3565b610421565b5060019392505050565b61032a828261063a565b5050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102b391859061031190866106fd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102b391859061031190866105c3565b60006102b33384846104d0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff821661044157600080fd5b73ffffffffffffffffffffffffffffffffffffffff831661046157600080fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff82166104f057600080fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205461052090826105c3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461055c90826106fd565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561063457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b73ffffffffffffffffffffffffffffffffffffffff821661065a57600080fd5b60025461066790826106fd565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461069a90826106fd565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101561077157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b939250505056fea26469706673582212200168d4831e08a1465e6bf1447880568d9dcb4ee0478dbd79b86defe0db0cb9dd64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x26B JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1C6 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x378934B4 EQ PUSH2 0x152 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2C2 JUMP JUMPDEST PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x320 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x32E JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x371 JUMP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x399 JUMP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3DC JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 CALLER DUP5 DUP5 PUSH2 0x421 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF DUP5 DUP5 DUP5 PUSH2 0x4D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x316 SWAP2 DUP7 SWAP2 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x5C3 JUMP JUMPDEST PUSH2 0x421 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x32A DUP3 DUP3 PUSH2 0x63A JUMP JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x2B3 SWAP2 DUP6 SWAP1 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x2B3 SWAP2 DUP6 SWAP1 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 CALLER DUP5 DUP5 PUSH2 0x4D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x520 SWAP1 DUP3 PUSH2 0x5C3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x55C SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x634 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x667 SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x69A SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x771 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADD PUSH9 0xD4831E08A1465E6BF1 DIFFICULTY PUSH25 0x80568D9DCB4EE0478DBD79B86DEFE0DB0CB9DD64736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "120:41:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:144:11;;;;;;;;;;;;;;;;-1:-1:-1;2744:144:11;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;968:92;;;:::i;:::-;;;;;;;;;;;;;;;;3340:219;;;;;;;;;;;;;;;;-1:-1:-1;3340:219:11;;;;;;;;;;;;;;;;;;:::i;7542:95::-;;;;;;;;;;;;;;;;-1:-1:-1;7542:95:11;;;;;;;;;:::i;:::-;;4060:190;;;;;;;;;;;;;;;;-1:-1:-1;4060:190:11;;;;;;;;;:::i;1264:107::-;;;;;;;;;;;;;;;;-1:-1:-1;1264:107:11;;;;:::i;4756:200::-;;;;;;;;;;;;;;;;-1:-1:-1;4756:200:11;;;;;;;;;:::i;1984:136::-;;;;;;;;;;;;;;;;-1:-1:-1;1984:136:11;;;;;;;;;:::i;1693:132::-;;;;;;;;;;;;;;;;-1:-1:-1;1693:132:11;;;;;;;;;;;:::i;2744:144::-;2818:4;2830:36;2839:10;2851:7;2860:5;2830:8;:36::i;:::-;-1:-1:-1;2879:4:11;2744:144;;;;:::o;968:92::-;1043:12;;968:92;:::o;3340:219::-;3428:4;3440:26;3450:4;3456:2;3460:5;3440:9;:26::i;:::-;3499:14;;;;;;;:8;:14;;;;;;;;3487:10;3499:26;;;;;;;;;3472:65;;3481:4;;3499:37;;3530:5;3499:30;:37::i;:::-;3472:8;:65::i;:::-;-1:-1:-1;3550:4:11;3340:219;;;;;:::o;7542:95::-;7608:24;7614:8;7624:7;7608:5;:24::i;:::-;7542:95;;:::o;4060:190::-;4161:10;4140:4;4182:20;;;:8;:20;;;;;;;;;:29;;;;;;;;;;4140:4;;4152:76;;4173:7;;4182:45;;4216:10;4182:33;:45::i;1264:107::-;1350:16;;1328:7;1350:16;;;;;;;;;;;;1264:107::o;4756:200::-;4862:10;4841:4;4883:20;;;:8;:20;;;;;;;;;:29;;;;;;;;;;4841:4;;4853:81;;4874:7;;4883:50;;4917:15;4883:33;:50::i;1984:136::-;2054:4;2066:32;2076:10;2088:2;2092:5;2066:9;:32::i;1693:132::-;1796:15;;;;1774:7;1796:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;1693:132::o;6700:230::-;6788:21;;;6780:30;;;;;;6824:19;;;6816:28;;;;;;6851:15;;;;;;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;:32;;;6894:31;;;;;;;;;;;;;;;;;6700:230;;;:::o;5166:238::-;5249:16;;;5241:25;;;;;;5291:15;;;:9;:15;;;;;;;;;;;:26;;5311:5;5291:19;:26::i;:::-;5273:15;;;;:9;:15;;;;;;;;;;;:44;;;;5339:13;;;;;;;:24;;5357:5;5339:17;:24::i;:::-;5323:13;;;;:9;:13;;;;;;;;;;;;:40;;;;5374:25;;;;;;;5323:13;;5374:25;;;;;;;;;;;;;5166:238;;;:::o;1186:158:31:-;1244:7;1272:1;1267;:6;;1259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1319:5:31;;;1186:158::o;5737:245:11:-;5807:21;;;5799:30;;;;;;5851:12;;:23;;5868:5;5851:16;:23::i;:::-;5836:12;:38;5901:18;;;:9;:18;;;;;;;;;;;:29;;5924:5;5901:22;:29::i;:::-;5880:18;;;:9;:18;;;;;;;;;;;:50;;;;5941:36;;;;;;;5880:18;;:9;;5941:36;;;;;;;;;;5737:245;;:::o;1419:158:31:-;1477:7;1504:5;;;1523:6;;;;1515:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:1;1419:158;-1:-1:-1;;;1419:158:31:o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "mockMint(address,uint256)": "378934b4",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "contracts/mocks/ERC20WrapperMock.sol": {
        "ERC20WrapperMock": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "signer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "name": "NonceChange",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "token_address",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "token_id",
                  "type": "uint256"
                }
              ],
              "name": "TokenRegistration",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "getIdAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getNTokens",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_signer",
                  "type": "address"
                }
              ],
              "name": "getNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                }
              ],
              "name": "getTokenID",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenID",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_signerAddress",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "_hash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "_sig",
                  "type": "bytes"
                }
              ],
              "name": "isValidSignature",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isValid",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bool",
                  "name": "_isGasFee",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "metaSafeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "_isGasFee",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "metaSafeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "_isGasFee",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "metaSetApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address payable",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address payable",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address payable",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052600160035534801561001557600080fd5b50600160008190527fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0581905560056020527f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b80546001600160a01b031916909117905561431a806100876000396000f3fe6080604052600436106101475760003560e01c8063a22cb465116100c0578063e985e9c511610074578063f242432a11610059578063f242432a14610391578063f5d4c820146103b1578063fa4e12d7146103d15761015a565b8063e985e9c514610351578063f23a6e61146103715761015a565b8063bc197c81116100a5578063bc197c81146102e4578063ce0b514b14610311578063d9caed12146103315761015a565b8063a22cb465146102a4578063a3d4926e146102c45761015a565b80634e1273f4116101175780637358e9a5116100fc5780637358e9a51461024f5780638340f5491461027c5780639040a9491461028f5761015a565b80634e1273f41461020257806363f8071c1461022f5761015a565b8062fdd58e1461015f57806301ffc9a7146101955780632d0335ab146101c25780632eb2c2d6146101e25761015a565b3661015a57610158600133346103f1565b005b600080fd5b34801561016b57600080fd5b5061017f61017a366004613478565b6106c4565b60405161018c9190613edc565b60405180910390f35b3480156101a157600080fd5b506101b56101b0366004613582565b6106f7565b60405161018c9190613831565b3480156101ce57600080fd5b5061017f6101dd366004612fc5565b6107de565b3480156101ee57600080fd5b506101586101fd366004613270565b610806565b34801561020e57600080fd5b5061022261021d3660046134a3565b610911565b60405161018c91906137ed565b34801561023b57600080fd5b5061017f61024a366004612fc5565b610a5d565b34801561025b57600080fd5b5061026f61026a366004613681565b610aba565b60405161018c9190613730565b61015861028a36600461332b565b6103f1565b34801561029b57600080fd5b5061017f610b16565b3480156102b057600080fd5b506101586102bf3660046133ce565b610b1c565b3480156102d057600080fd5b506101586102df3660046131b3565b610bb5565b3480156102f057600080fd5b506103046102ff366004613062565b610d29565b60405161018c91906138b9565b34801561031d57600080fd5b5061015861032c36600461333f565b610df3565b34801561033d57600080fd5b5061015861034c36600461310c565b610ed2565b34801561035d57600080fd5b506101b561036c36600461302a565b610eeb565b34801561037d57600080fd5b5061030461038c36600461314c565b610f26565b34801561039d57600080fd5b506101586103ac3660046133b7565b610fa2565b3480156103bd57600080fd5b506101586103cc3660046132be565b6110a6565b3480156103dd57600080fd5b506101b56103ec3660046133fb565b6111d6565b73ffffffffffffffffffffffffffffffffffffffff8216610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613943565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff841660011461066657341561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139fd565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906104f590339030908790600401613751565b602060405180830381600087803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105479190613566565b506105506119b7565b610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613a5a565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260409020548061065c576003805460010190819055600081815260056020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b169081179091558352600490915290819020829055519092507ff977d54986414fc91816901629d1d788ad95448ab4198dcb9b6dc5ed2b930c1f9061064f9087908590613782565b60405180910390a1610660565b8091505b506106a3565b34821461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906138e6565b5060015b6106be838284604051806020016040528060008152506119eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061078a57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b806107d657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b3373ffffffffffffffffffffffffffffffffffffffff8616148061082f575061082f8533610eeb565b610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806141be602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166108f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061412f6030913960400191505060405180910390fd5b6108fc85858585611aa0565b61090a858585855a86611df4565b5050505050565b6060815183511461096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061415f602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561098757600080fd5b506040519080825280602002602001820160405280156109b1578160200160208202803683370190505b50905060005b8451811015610a55576000808683815181106109cf57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858381518110610a1f57fe5b6020026020010151815260200190815260200160002054828281518110610a4257fe5b60209081029190910101526001016109b7565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020526040902054806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613dc5565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613c51565b60035490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff8516610c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d0b565b6060610c0c612df6565b6060610cbf89857fa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a060001b8c8c8c604051602001610c4a9190613699565b604051602081830303815290604052805190602001208c604051602001610c719190613699565b604051602081830303815290604052805190602001208c610c93576000610c96565b60015b604051602001610cab9695949392919061383c565b604051602081830303815290604052612061565b9050610ccd89898989611aa0565b8415610d105780806020019051810190610ce7919061364c565b8094508193505050610d0189898989866020015188611df4565b610d0b8983612230565b610d1e565b610d1e898989895a86611df4565b505050505050505050565b6000333014610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b71565b60005b8451811015610dc757610d8c858281518110610d7f57fe5b6020026020010151610aba565b50610dbf3087878481518110610d9e57fe5b6020026020010151878581518110610db257fe5b60200260200101516124d9565b600101610d67565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610e40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613ab7565b6060610e4a612df6565b6060610e8289857fce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558828c8c8c8c610c93576000610c96565b9050610e90898989896126da565b8415610ec45780806020019051810190610eaa919061364c565b8094508193505050610d01898989898660200151886127dd565b610d1e898989895a866127dd565b6000610edd84610a5d565b90506106be338483856124d9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000333014610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139a0565b610f6a84610aba565b50610f77308686866124d9565b507ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3373ffffffffffffffffffffffffffffffffffffffff86161480610fcb5750610fcb8533610eeb565b611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614029602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613fc7602b913960400191505060405180910390fd5b611098858585856126da565b61090a858585855a866127dd565b606061110286837ff5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa5248289896110dc5760006110df565b60015b896110eb5760006110ee565b60015b604051602001610cab95949392919061387d565b73ffffffffffffffffffffffffffffffffffffffff8781166000818152600160209081526040808320948b16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168915151790555192935090917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190611196908890613831565b60405180910390a382156111ce576111ac612df6565b818060200190518101906111c09190613619565b90506111cc8782612230565b505b505050505050565b600080825111611231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806141ed6043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851661129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018061418b6033913960400191505060405180910390fd5b60006112a8836129ce565b60f81c905060058110611306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b60008160ff16600581111561131757fe5b905060008080808085600581111561132b57fe5b1415611382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806140c26036913960400191505060405180910390fd5b600185600581111561139057fe5b14156114d35787516061146113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b6113fb886000612a8b565b9250611408886020612a8b565b91508760408151811061141757fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611481573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d811691161497506119af9650505050505050565b60028560058111156114e157fe5b1415611631578751606114611541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b61154c886000612a8b565b9250611559886020612a8b565b91508760408151811061156857fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611481573d6000803e3d6000fd5b600385600581111561163f57fe5b14156117f757604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b838110156116cd5781810151838201526020016116b5565b50505050905090810190601f1680156116fa5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561172d578181015183820152602001611715565b50505050905090810190601f16801561175a5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561177957600080fd5b505afa15801561178d573d6000803e3d6000fd5b505050506040513d60208110156117a357600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b600485600581111561180557fe5b141561195e57604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b8381101561189557818101518382015260200161187d565b50505050905090810190601f1680156118c25780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b1580156118e057600080fd5b505afa1580156118f4573d6000803e3d6000fd5b505050506040513d602081101561190a57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b949350505050565b6000803d80156119ce57602081146119d7576119e3565b600191506119e3565b60206000803e60005191505b501515905090565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152902054611a249083612af3565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46106be60008585855a866127dd565b8051825114611afa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806140536035913960400191505060405180910390fd5b815160005b81811015611cec57611b8f838281518110611b1657fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611b6a57fe5b6020026020010151815260200190815260200160002054612b6e90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611bdb57fe5b6020026020010151815260200190815260200160002081905550611c7d838281518110611c0457fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611c5857fe5b6020026020010151815260200190815260200160002054612af390919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611cc957fe5b602090810291909101810151825281019190915260400160002055600101611aff565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611d99578181015183820152602001611d81565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611dd8578181015183820152602001611dc0565b5050505090500194505050505060405180910390a45050505050565b611e138573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611ecb578181015183820152602001611eb3565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611f0a578181015183820152602001611ef2565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611f46578181015183820152602001611f2e565b50505050905090810190601f168015611f735780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611f9857600080fd5b5087f1158015611fac573d6000803e3d6000fd5b50505050506040513d6020811015611fc357600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614230603f913960400191505060405180910390fd5b6060808380602001905181019061207891906135c2565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040812054919450919250906120b0836041612a8b565b90508181108015906120c457508160640181105b6120fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e22565b60006121368683878051906020012060405160200161211b939291906136cf565b60405160208183030381529060405280519060200120612c1c565b9050606086838760405160200161214f939291906136f6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825273ffffffffffffffffffffffffffffffffffffffff8c166000818152600260205292909220600187019081905590935090917fb861b7bdbe611a846ab271b8d2810391bc8b5a968f390c322438ecab66bccf59916121da91613edc565b60405180910390a26121ee898383886111d6565b612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b14565b50505050509392505050565b600061223f82606001516129ce565b60f81c90506002811061227e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e7f565b60008160ff16600281111561228f57fe5b835160408501519192506000918291829173ffffffffffffffffffffffffffffffffffffffff16156122c55786604001516122c7565b335b925060008560028111156122d757fe5b14156123d65786606001518060200190518101906122f59190612ffd565b909450915073ffffffffffffffffffffffffffffffffffffffff841630141561234657612324888484846126da565b6123418884845a85604051806020016040528060008152506127dd565b6123d1565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f242432a9061239e908b908790879087906004016137a8565b600060405180830381600087803b1580156123b857600080fd5b505af11580156123cc573d6000803e3d6000fd5b505050505b6124cf565b86606001518060200190518101906123ee9190612fe1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90612447908b9087908690600401613751565b602060405180830381600087803b15801561246157600080fd5b505af1158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190613566565b6124cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613cae565b5050505050505050565b6124e4848383612d4b565b600182146125ea57600082815260056020526040908190205490517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690819063a9059cbb906125539087908690600401613782565b602060405180830381600087803b15801561256d57600080fd5b505af1158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a59190613566565b506125ae6119b7565b6125e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b506106be565b73ffffffffffffffffffffffffffffffffffffffff8316612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613bf4565b60008373ffffffffffffffffffffffffffffffffffffffff168260405161265d9061372d565b60006040518083038185875af1925050503d806000811461269a576040519150601f19603f3d011682016040523d82523d6000602084013e61269f565b606091505b505090508061090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546127139082612b6e565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546127639082612af3565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6127fc8573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156128b557818101518382015260200161289d565b50505050905090810190601f1680156128e25780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561290557600080fd5b5087f1158015612919573d6000803e3d6000fd5b50505050506040513d602081101561293057600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061426f603a913960400191505060405180910390fd5b600080825111612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180613ff26037913960400191505060405180910390fd5b81600183510381518110612a3957fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b60008160200183511015612aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806142a9603c913960400191505060405180910390fd5b50016020015190565b600082820183811015612b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082821115612bdf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000813f8015801590612b6757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b604080518082018252600281527f1901000000000000000000000000000000000000000000000000000000000000602080830191825283517f035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d47498183015230818601528451808203860181526060820190955284519490910193909320825160009491928692608001918291908083835b60208310612ce957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612cac565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152902054612d849082612b6e565b73ffffffffffffffffffffffffffffffffffffffff841660008181526020818152604080832087845282528083209490945583518681529081018590528351919333927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4505050565b60405180608001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600082601f830112612e44578081fd5b8135612e57612e5282613f09565b613ee5565b818152915060208083019084810181840286018201871015612e7857600080fd5b60005b84811015612e9757813584529282019290820190600101612e7b565b505050505092915050565b600082601f830112612eb2578081fd5b8135612ec0612e5282613f27565b9150808252836020828501011115612ed757600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612f00578081fd5b8151612f0e612e5282613f27565b9150808252836020828501011115612f2557600080fd5b612f36816020840160208601613f67565b5092915050565b600060808284031215612f4e578081fd5b6040516080810167ffffffffffffffff8282108183111715612f6c57fe5b81604052829350845183526020850151602084015260408501519150612f9182613f93565b8160408401526060850151915080821115612fab57600080fd5b50612fb885828601612ef0565b6060830152505092915050565b600060208284031215612fd6578081fd5b8135612b6781613f93565b600060208284031215612ff2578081fd5b8151612b6781613f93565b6000806040838503121561300f578081fd5b825161301a81613f93565b6020939093015192949293505050565b6000806040838503121561303c578182fd5b823561304781613f93565b9150602083013561305781613f93565b809150509250929050565b600080600080600060a08688031215613079578081fd5b853561308481613f93565b9450602086013561309481613f93565b9350604086013567ffffffffffffffff808211156130b0578283fd5b6130bc89838a01612e34565b945060608801359150808211156130d1578283fd5b6130dd89838a01612e34565b935060808801359150808211156130f2578283fd5b506130ff88828901612ea2565b9150509295509295909350565b600080600060608486031215613120578283fd5b833561312b81613f93565b9250602084013561313b81613f93565b929592945050506040919091013590565b600080600080600060a08688031215613163578081fd5b853561316e81613f93565b9450602086013561317e81613f93565b93506040860135925060608601359150608086013567ffffffffffffffff8111156131a7578182fd5b6130ff88828901612ea2565b60008060008060008060c087890312156131cb578384fd5b86356131d681613f93565b955060208701356131e681613f93565b9450604087013567ffffffffffffffff80821115613202578586fd5b61320e8a838b01612e34565b95506060890135915080821115613223578283fd5b61322f8a838b01612e34565b94506080890135915061324182613fb8565b90925060a08801359080821115613256578283fd5b5061326389828a01612ea2565b9150509295509295509295565b600080600080600060a08688031215613287578283fd5b853561329281613f93565b945060208601356132a281613f93565b9350604086013567ffffffffffffffff808211156130b0578485fd5b600080600080600060a086880312156132d5578283fd5b85356132e081613f93565b945060208601356132f081613f93565b9350604086013561330081613fb8565b9250606086013561331081613fb8565b9150608086013567ffffffffffffffff8111156131a7578182fd5b600080600060608486031215613120578081fd5b60008060008060008060c08789031215613357578384fd5b863561336281613f93565b9550602087013561337281613f93565b94506040870135935060608701359250608087013561339081613fb8565b915060a087013567ffffffffffffffff8111156133ab578182fd5b61326389828a01612ea2565b600080600080600060a08688031215613163578283fd5b600080604083850312156133e0578182fd5b82356133eb81613f93565b9150602083013561305781613fb8565b60008060008060808587031215613410578182fd5b843561341b81613f93565b935060208501359250604085013567ffffffffffffffff8082111561343e578384fd5b61344a88838901612ea2565b9350606087013591508082111561345f578283fd5b5061346c87828801612ea2565b91505092959194509250565b6000806040838503121561348a578182fd5b823561349581613f93565b946020939093013593505050565b600080604083850312156134b5578182fd5b823567ffffffffffffffff808211156134cc578384fd5b818501915085601f8301126134df578384fd5b81356134ed612e5282613f09565b80828252602080830192508086018a82838702890101111561350d578889fd5b8896505b8487101561353857803561352481613f93565b845260019690960195928101928101613511565b50909650870135935050508082111561354f578283fd5b5061355c85828601612e34565b9150509250929050565b600060208284031215613577578081fd5b8151612b6781613fb8565b600060208284031215613593578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612b67578182fd5b600080604083850312156135d4578182fd5b825167ffffffffffffffff808211156135eb578384fd5b6135f786838701612ef0565b9350602085015191508082111561360c578283fd5b5061355c85828601612ef0565b60006020828403121561362a578081fd5b815167ffffffffffffffff811115613640578182fd5b6119af84828501612f3d565b6000806040838503121561365e578182fd5b825167ffffffffffffffff80821115613675578384fd5b6135f786838701612f3d565b600060208284031215613692578081fd5b5035919050565b815160009082906020808601845b838110156136c3578151855293820193908201906001016136a7565b50929695505050505050565b600084516136e1818460208901613f67565b91909101928352506020820152604001919050565b60008451613708818460208901613f67565b82018481528351613720816020808501908801613f67565b0160200195945050505050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6020808252825182820181905260009190848201906040850190845b8181101561382557835183529284019291840191600101613809565b50909695505050505050565b901515815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252602d908201527f4d657461455243323057726170706572236465706f7369743a20494e434f525260408201527f4543545f4d53475f56414c554500000000000000000000000000000000000000606082015260800190565b6020808252602b908201527f4d657461455243323057726170706572236465706f7369743a20494e56414c4960408201527f445f524543495049454e54000000000000000000000000000000000000000000606082015260800190565b6020808252603c908201527f4d657461455243323057726170706572236f6e4552433131353552656365697660408201527f65643a20494e56414c49445f455243313135355f524543454956454400000000606082015260800190565b6020808252602c908201527f4d657461455243323057726170706572236465706f7369743a204e4f4e5f4e5560408201527f4c4c5f4d53475f56414c55450000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d657461455243323057726170706572236465706f7369743a205452414e534660408201527f45525f4641494c45440000000000000000000000000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461236d657461536166655472616e7366657246726f6d60408201527f3a20494e56414c49445f524543495049454e5400000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f5349474e415455524500000000000000000000000000606082015260800190565b60208082526041908201527f4d657461455243323057726170706572236f6e4552433131353542617463685260408201527f656365697665643a20494e56414c49445f455243313135355f5245434549564560608201527f4400000000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602c908201527f4d6574614552433230577261707065722377697468647261773a20494e56414c60408201527f49445f524543495049454e540000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4d657461455243323057726170706572236765744964416464726573733a205560408201527f4e524547495354455245445f544f4b454e000000000000000000000000000000606082015260800190565b60208082526032908201527f455243313135354d657461235f7472616e736665724761734665653a2045524360408201527f32305f5452414e534645525f4641494c45440000000000000000000000000000606082015260800190565b60208082526038908201527f455243313135354d657461236d6574615361666542617463685472616e73666560408201527f7246726f6d3a20494e56414c49445f524543495049454e540000000000000000606082015260800190565b6020808252602a908201527f4d6574614552433230577261707065722377697468647261773a205452414e5360408201527f4645525f4641494c454400000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4d65746145524332305772617070657223676574546f6b656e49443a20554e5260408201527f4547495354455245445f544f4b454e0000000000000000000000000000000000606082015260800190565b6020808252602f908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f4e4f4e43450000000000000000000000000000000000606082015260800190565b6020808252602e908201527f455243313135354d657461235f7472616e736665724761734665653a20554e5360408201527f5550504f525445445f544f4b454e000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715613f0157fe5b604052919050565b600067ffffffffffffffff821115613f1d57fe5b5060209081020190565b600067ffffffffffffffff821115613f3b57fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015613f82578181015183820152602001613f6a565b838111156106be5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114613fb557600080fd5b50565b8015158114613fb557600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245444552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f524551554952454445524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e455245524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f524551554952454445524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d4553534147454c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a264697066735822122079dca3ccf3c87ce8c5b2b0cdf20a6605d7cdada9245e5c8b2191910f42236c6d64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x3 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH32 0xABD6E7CB50984FF9C2F3E18A2660C3353DADF4E3291DEEB275DAE2CD1E44FE05 DUP2 SWAP1 SSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0x1471EB6EB2C5E789FC3DE43F8CE62938C7D1836EC861730447E2ADA8FD81017B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x431A DUP1 PUSH2 0x87 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x147 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xF242432A GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x391 JUMPI DUP1 PUSH4 0xF5D4C820 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0xFA4E12D7 EQ PUSH2 0x3D1 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x371 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xBC197C81 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0xCE0B514B EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x331 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0xA3D4926E EQ PUSH2 0x2C4 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x7358E9A5 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x7358E9A5 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0x8340F549 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x9040A949 EQ PUSH2 0x28F JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x63F8071C EQ PUSH2 0x22F JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x1E2 JUMPI PUSH2 0x15A JUMP JUMPDEST CALLDATASIZE PUSH2 0x15A JUMPI PUSH2 0x158 PUSH1 0x1 CALLER CALLVALUE PUSH2 0x3F1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x17A CALLDATASIZE PUSH1 0x4 PUSH2 0x3478 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3EDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3582 JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3831 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC5 JUMP JUMPDEST PUSH2 0x7DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x1FD CALLDATASIZE PUSH1 0x4 PUSH2 0x3270 JUMP JUMPDEST PUSH2 0x806 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x222 PUSH2 0x21D CALLDATASIZE PUSH1 0x4 PUSH2 0x34A3 JUMP JUMPDEST PUSH2 0x911 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x37ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC5 JUMP JUMPDEST PUSH2 0xA5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26F PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x3681 JUMP JUMPDEST PUSH2 0xABA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3730 JUMP JUMPDEST PUSH2 0x158 PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x332B JUMP JUMPDEST PUSH2 0x3F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0xB16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x33CE JUMP JUMPDEST PUSH2 0xB1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x31B3 JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x2FF CALLDATASIZE PUSH1 0x4 PUSH2 0x3062 JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x38B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x333F JUMP JUMPDEST PUSH2 0xDF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x34C CALLDATASIZE PUSH1 0x4 PUSH2 0x310C JUMP JUMPDEST PUSH2 0xED2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x302A JUMP JUMPDEST PUSH2 0xEEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x38C CALLDATASIZE PUSH1 0x4 PUSH2 0x314C JUMP JUMPDEST PUSH2 0xF26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x3AC CALLDATASIZE PUSH1 0x4 PUSH2 0x33B7 JUMP JUMPDEST PUSH2 0xFA2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x32BE JUMP JUMPDEST PUSH2 0x10A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x3EC CALLDATASIZE PUSH1 0x4 PUSH2 0x33FB JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3943 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x1 EQ PUSH2 0x666 JUMPI CALLVALUE ISZERO PUSH2 0x49F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x39FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x4F5 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3751 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x523 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x547 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST POP PUSH2 0x550 PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0x586 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3A5A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x65C JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MSTORE PUSH1 0x4 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE MLOAD SWAP1 SWAP3 POP PUSH32 0xF977D54986414FC91816901629D1D788AD95448AB4198DCB9B6DC5ED2B930C1F SWAP1 PUSH2 0x64F SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH2 0x3782 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x660 JUMP JUMPDEST DUP1 SWAP2 POP JUMPDEST POP PUSH2 0x6A3 JUMP JUMPDEST CALLVALUE DUP3 EQ PUSH2 0x69F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x38E6 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST PUSH2 0x6BE DUP4 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x19EB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x78A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x7D6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x82F JUMPI POP PUSH2 0x82F DUP6 CALLER PUSH2 0xEEB JUMP JUMPDEST PUSH2 0x884 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x41BE PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x8F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x412F PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8FC DUP6 DUP6 DUP6 DUP6 PUSH2 0x1AA0 JUMP JUMPDEST PUSH2 0x90A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1DF4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x415F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x987 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9B1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9CF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xA1F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA42 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x9B7 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3DC5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3C51 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0xC02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D0B JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC0C PUSH2 0x2DF6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCBF DUP10 DUP6 PUSH32 0xA3D4926E8CF8FE8E020CD29F514C256BC2EEC62AA2337E415F1A33A4828AF5A0 PUSH1 0x0 SHL DUP13 DUP13 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC4A SWAP2 SWAP1 PUSH2 0x3699 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC71 SWAP2 SWAP1 PUSH2 0x3699 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH2 0xC93 JUMPI PUSH1 0x0 PUSH2 0xC96 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCAB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x2061 JUMP JUMPDEST SWAP1 POP PUSH2 0xCCD DUP10 DUP10 DUP10 DUP10 PUSH2 0x1AA0 JUMP JUMPDEST DUP5 ISZERO PUSH2 0xD10 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xCE7 SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0xD01 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x1DF4 JUMP JUMPDEST PUSH2 0xD0B DUP10 DUP4 PUSH2 0x2230 JUMP JUMPDEST PUSH2 0xD1E JUMP JUMPDEST PUSH2 0xD1E DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x1DF4 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0xD64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3B71 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xDC7 JUMPI PUSH2 0xD8C DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD7F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xABA JUMP JUMPDEST POP PUSH2 0xDBF ADDRESS DUP8 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD9E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xDB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x24D9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD67 JUMP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0xE40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3AB7 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE4A PUSH2 0x2DF6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE82 DUP10 DUP6 PUSH32 0xCE0B514B3931BDBE4D5D44E4F035AFE7113767B7DB71949271F6A62D9C60F558 DUP3 DUP13 DUP13 DUP13 DUP13 PUSH2 0xC93 JUMPI PUSH1 0x0 PUSH2 0xC96 JUMP JUMPDEST SWAP1 POP PUSH2 0xE90 DUP10 DUP10 DUP10 DUP10 PUSH2 0x26DA JUMP JUMPDEST DUP5 ISZERO PUSH2 0xEC4 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xEAA SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0xD01 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x27DD JUMP JUMPDEST PUSH2 0xD1E DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEDD DUP5 PUSH2 0xA5D JUMP JUMPDEST SWAP1 POP PUSH2 0x6BE CALLER DUP5 DUP4 DUP6 PUSH2 0x24D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0xF61 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x39A0 JUMP JUMPDEST PUSH2 0xF6A DUP5 PUSH2 0xABA JUMP JUMPDEST POP PUSH2 0xF77 ADDRESS DUP7 DUP7 DUP7 PUSH2 0x24D9 JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0xFCB JUMPI POP PUSH2 0xFCB DUP6 CALLER PUSH2 0xEEB JUMP JUMPDEST PUSH2 0x1020 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4029 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FC7 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1098 DUP6 DUP6 DUP6 DUP6 PUSH2 0x26DA JUMP JUMPDEST PUSH2 0x90A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1102 DUP7 DUP4 PUSH32 0xF5D4C820494C8595DE274C7FF619BEAD38AAC4FBC3D143B5BF956AA4B84FA524 DUP3 DUP10 DUP10 PUSH2 0x10DC JUMPI PUSH1 0x0 PUSH2 0x10DF JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP10 PUSH2 0x10EB JUMPI PUSH1 0x0 PUSH2 0x10EE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCAB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x387D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP12 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP10 ISZERO ISZERO OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP1 PUSH2 0x1196 SWAP1 DUP9 SWAP1 PUSH2 0x3831 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP3 ISZERO PUSH2 0x11CE JUMPI PUSH2 0x11AC PUSH2 0x2DF6 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x11C0 SWAP2 SWAP1 PUSH2 0x3619 JUMP JUMPDEST SWAP1 POP PUSH2 0x11CC DUP8 DUP3 PUSH2 0x2230 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x1231 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x41ED PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x129D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x418B PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A8 DUP4 PUSH2 0x29CE JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x5 DUP2 LT PUSH2 0x1306 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4088 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1317 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x132B JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1382 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40C2 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1390 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x14D3 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x13F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40F8 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x13FB DUP9 PUSH1 0x0 PUSH2 0x2A8B JUMP JUMPDEST SWAP3 POP PUSH2 0x1408 DUP9 PUSH1 0x20 PUSH2 0x2A8B JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x1417 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP4 POP PUSH1 0x1 DUP11 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1481 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 DUP2 AND SWAP2 AND EQ SWAP8 POP PUSH2 0x19AF SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x14E1 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1631 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x1541 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40F8 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x154C DUP9 PUSH1 0x0 PUSH2 0x2A8B JUMP JUMPDEST SWAP3 POP PUSH2 0x1559 DUP9 PUSH1 0x20 PUSH2 0x2A8B JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x1568 JUMPI INVALID JUMPDEST ADD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 DUP6 ADD MSTORE PUSH1 0x3C DUP1 DUP3 ADD DUP16 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x5C DUP3 ADD DUP1 DUP5 MSTORE DUP2 MLOAD SWAP2 DUP7 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP1 SWAP2 MSTORE PUSH1 0x7C DUP3 ADD DUP1 DUP5 MSTORE MSTORE PUSH1 0xF8 SWAP3 SWAP1 SWAP3 SHR PUSH1 0x9C DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xBC DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0xDC DUP4 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP1 SWAP7 POP PUSH1 0x1 SWAP3 PUSH1 0xFC DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1481 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x163F JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x17F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 DUP3 MSTORE DUP11 MLOAD PUSH1 0x44 DUP3 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP3 PUSH4 0x20C13B0B SWAP3 DUP14 SWAP3 DUP14 SWAP3 SWAP2 DUP3 SWAP2 PUSH1 0x24 DUP3 ADD SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16B5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x16FA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x172D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1715 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x175A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x178D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x19AF SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1805 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x195E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP13 DUP2 MSTORE PUSH1 0x24 DUP3 ADD SWAP3 DUP4 MSTORE DUP11 MLOAD PUSH1 0x44 DUP4 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP4 PUSH4 0x1626BA7E SWAP4 DUP16 SWAP4 DUP15 SWAP4 SWAP1 SWAP3 SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1895 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x187D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18C2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x190A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x19AF SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4088 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 RETURNDATASIZE DUP1 ISZERO PUSH2 0x19CE JUMPI PUSH1 0x20 DUP2 EQ PUSH2 0x19D7 JUMPI PUSH2 0x19E3 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x19E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x0 DUP1 RETURNDATACOPY PUSH1 0x0 MLOAD SWAP2 POP JUMPDEST POP ISZERO ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1A24 SWAP1 DUP4 PUSH2 0x2AF3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP8 DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x6BE PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x1AFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4053 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1CEC JUMPI PUSH2 0x1B8F DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B16 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1B6A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x2B6E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1BDB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x1C7D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C04 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1C58 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x2AF3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CC9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1AFF JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D99 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D81 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DD8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DC0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1E13 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2BE5 JUMP JUMPDEST ISZERO PUSH2 0x11CE JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1ECB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EB3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F0A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EF2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F46 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1F2E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F73 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1FAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4230 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP1 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2078 SWAP2 SWAP1 PUSH2 0x35C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x20B0 DUP4 PUSH1 0x41 PUSH2 0x2A8B JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x20C4 JUMPI POP DUP2 PUSH1 0x64 ADD DUP2 LT JUMPDEST PUSH2 0x20FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3E22 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2136 DUP7 DUP4 DUP8 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x211B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2C1C JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP7 DUP4 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x214F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x1 DUP8 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 SWAP4 POP SWAP1 SWAP2 PUSH32 0xB861B7BDBE611A846AB271B8D2810391BC8B5A968F390C322438ECAB66BCCF59 SWAP2 PUSH2 0x21DA SWAP2 PUSH2 0x3EDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x21EE DUP10 DUP4 DUP4 DUP9 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x2224 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3B14 JUMP JUMPDEST POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x223F DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x29CE JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x2 DUP2 LT PUSH2 0x227E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3E7F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x228F JUMPI INVALID JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP6 ADD MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x22C5 JUMPI DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x22C7 JUMP JUMPDEST CALLER JUMPDEST SWAP3 POP PUSH1 0x0 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22D7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x23D6 JUMPI DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x22F5 SWAP2 SWAP1 PUSH2 0x2FFD JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ ISZERO PUSH2 0x2346 JUMPI PUSH2 0x2324 DUP9 DUP5 DUP5 DUP5 PUSH2 0x26DA JUMP JUMPDEST PUSH2 0x2341 DUP9 DUP5 DUP5 GAS DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x27DD JUMP JUMPDEST PUSH2 0x23D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0xF242432A SWAP1 PUSH2 0x239E SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x37A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x24CF JUMP JUMPDEST DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x23EE SWAP2 SWAP1 PUSH2 0x2FE1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x2447 SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3751 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2475 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2499 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST PUSH2 0x24CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3CAE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x24E4 DUP5 DUP4 DUP4 PUSH2 0x2D4B JUMP JUMPDEST PUSH1 0x1 DUP3 EQ PUSH2 0x25EA JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP2 SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x2553 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3782 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x256D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2581 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25A5 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST POP PUSH2 0x25AE PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0x25E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D68 JUMP JUMPDEST POP PUSH2 0x6BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2637 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3BF4 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x265D SWAP1 PUSH2 0x372D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x269A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x269F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x90A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D68 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2713 SWAP1 DUP3 PUSH2 0x2B6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x2763 SWAP1 DUP3 PUSH2 0x2AF3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x27FC DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2BE5 JUMP JUMPDEST ISZERO PUSH2 0x11CE JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28B5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x289D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x28E2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x2919 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2930 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x426F PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x2A29 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF2 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x2A39 JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO PUSH2 0x2AEA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x42A9 PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2B67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x2BDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2B67 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD PUSH32 0x35AFF83D86937D35B32E04F0DDC6FF469290EEF2F1B692D8A815C89404D4749 DUP2 DUP4 ADD MSTORE ADDRESS DUP2 DUP7 ADD MSTORE DUP5 MLOAD DUP1 DUP3 SUB DUP7 ADD DUP2 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP6 MSTORE DUP5 MLOAD SWAP5 SWAP1 SWAP2 ADD SWAP4 SWAP1 SWAP4 KECCAK256 DUP3 MLOAD PUSH1 0x0 SWAP5 SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0x80 ADD SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2CE9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2CAC JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE SWAP3 ADD SWAP5 DUP6 MSTORE POP DUP4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP5 SUB DUP4 ADD DUP2 MSTORE SWAP3 DUP2 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2D84 SWAP1 DUP3 PUSH2 0x2B6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD SWAP2 SWAP4 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E44 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2E57 PUSH2 0x2E52 DUP3 PUSH2 0x3F09 JUMP JUMPDEST PUSH2 0x3EE5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x2E78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2E97 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E7B JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2EB2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2EC0 PUSH2 0x2E52 DUP3 PUSH2 0x3F27 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2ED7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2F00 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F0E PUSH2 0x2E52 DUP3 PUSH2 0x3F27 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2F25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F36 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F67 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F4E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x2F6C JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 SWAP4 POP DUP5 MLOAD DUP4 MSTORE PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH2 0x2F91 DUP3 PUSH2 0x3F93 JUMP JUMPDEST DUP2 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2FAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB8 DUP6 DUP3 DUP7 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FD6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B67 DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FF2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B67 DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x300F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x301A DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x303C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3047 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3057 DUP2 PUSH2 0x3F93 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3079 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3084 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3094 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x30B0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x30BC DUP10 DUP4 DUP11 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x30D1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x30DD DUP10 DUP4 DUP11 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x30F2 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x30FF DUP9 DUP3 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3120 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x312B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x313B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3163 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x316E DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x317E DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x30FF DUP9 DUP3 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x31CB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x31D6 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x31E6 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3202 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x320E DUP11 DUP4 DUP12 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3223 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x322F DUP11 DUP4 DUP12 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3241 DUP3 PUSH2 0x3FB8 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x3256 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3263 DUP10 DUP3 DUP11 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3287 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3292 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x32A2 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x30B0 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x32D5 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x32E0 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x32F0 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3300 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x3310 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3120 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3357 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3362 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3372 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3390 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33AB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3263 DUP10 DUP3 DUP11 ADD PUSH2 0x2EA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3163 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x33E0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x33EB DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3057 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3410 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x341B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x343E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x344A DUP9 DUP4 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x345F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x346C DUP8 DUP3 DUP9 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x348A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3495 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x34B5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x34CC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x34DF JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34ED PUSH2 0x2E52 DUP3 PUSH2 0x3F09 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x350D JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x3538 JUMPI DUP1 CALLDATALOAD PUSH2 0x3524 DUP2 PUSH2 0x3F93 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x3511 JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x354F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x355C DUP6 DUP3 DUP7 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3577 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B67 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3593 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x2B67 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x35D4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x35EB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x35F7 DUP7 DUP4 DUP8 ADD PUSH2 0x2EF0 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x360C JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x355C DUP6 DUP3 DUP7 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x362A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3640 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19AF DUP5 DUP3 DUP6 ADD PUSH2 0x2F3D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x365E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3675 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x35F7 DUP7 DUP4 DUP8 ADD PUSH2 0x2F3D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3692 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 DUP3 SWAP1 PUSH1 0x20 DUP1 DUP7 ADD DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x36C3 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x36A7 JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x36E1 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3F67 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 DUP4 MSTORE POP PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x3708 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3F67 JUMP JUMPDEST DUP3 ADD DUP5 DUP2 MSTORE DUP4 MLOAD PUSH2 0x3720 DUP2 PUSH1 0x20 DUP1 DUP6 ADD SWAP1 DUP9 ADD PUSH2 0x3F67 JUMP JUMPDEST ADD PUSH1 0x20 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3825 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3809 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A20494E434F5252 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4543545F4D53475F56414C554500000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A20494E56414C49 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x445F524543495049454E54000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236F6E45524331313535526563656976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x65643A20494E56414C49445F455243313135355F524543454956454400000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A204E4F4E5F4E55 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4C4C5F4D53475F56414C55450000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A205452414E5346 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x45525F4641494C45440000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D657461536166655472616E7366657246726F6D PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F524543495049454E5400000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F5349474E415455524500000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x41 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236F6E45524331313535426174636852 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656365697665643A20494E56414C49445F455243313135355F52454345495645 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6574614552433230577261707065722377697468647261773A20494E56414C PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x49445F524543495049454E540000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236765744964416464726573733A2055 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4E524547495354455245445F544F4B454E000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20455243 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x32305F5452414E534645525F4641494C45440000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D6574615361666542617463685472616E736665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7246726F6D3A20494E56414C49445F524543495049454E540000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6574614552433230577261707065722377697468647261773A205452414E53 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4645525F4641494C454400000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2F SWAP1 DUP3 ADD MSTORE PUSH32 0x4D65746145524332305772617070657223676574546F6B656E49443A20554E52 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4547495354455245445F544F4B454E0000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2F SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F4E4F4E43450000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20554E53 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x5550504F525445445F544F4B454E000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3F01 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3F1D JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3F3B JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F82 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F6A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x6BE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3FB5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD 0x4C PUSH10 0x62427974657323706F70 0x4C PUSH2 0x7374 TIMESTAMP PUSH26 0x74653A20475245415445525F5448414E5F5A45524F5F4C454E47 SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 SSTORE 0x4E MSTORE8 SSTORE POP POP 0x4F MSTORE SLOAD GASLIMIT DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4C 0x4C GASLIMIT SELFBALANCE COINBASE 0x4C 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F CODECOPY CALLDATACOPY 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E GASLIMIT MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F SLOAD 0x48 COINBASE 0x4E 0x5F ADDRESS 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT 0x4C PUSH10 0x62427974657323726561 PUSH5 0x4279746573 CALLER ORIGIN GASPRICE KECCAK256 SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F 0x4F MSTORE 0x5F GASLIMIT MLOAD SSTORE COINBASE 0x4C 0x5F SLOAD 0x4F 0x5F CALLER ORIGIN 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0xDCA3CCF3C87CE8C5B2B0CDF20A6605D7CDADA9245E5C8B219191 0xF TIMESTAMP 0x23 PUSH13 0x6D64736F6C6343000704003300 ",
              "sourceMap": "164:50:7:-:0;;;851:1:12;824:28;;164:50:7;;;;;;;;;-1:-1:-1;953:3:12;1720:24;;;;;:33;;;1759:11;1720:24;1759:19;;:33;;-1:-1:-1;;;;;;1759:33:12;;;;;;164:50:7;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:31906:33",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:33",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:622:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "133:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "142:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "149:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "135:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "135:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "135:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "112:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "120:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "108:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "108:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "127:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "104:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "104:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "94:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "193:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "180:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "180:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "170:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "209:78:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "279:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "233:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "233:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "218:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "218:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "209:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "296:16:33",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "307:5:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "300:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "328:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "335:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "321:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "321:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "321:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "351:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "361:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "355:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "385:5:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "392:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "381:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "381:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "404:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "419:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "427:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "415:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "415:15:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "408:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "489:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "498:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "501:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "491:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "491:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "491:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "453:6:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "465:6:33"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "473:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "461:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "461:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "449:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "449:28:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "479:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "445:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "445:37:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "484:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "442:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "442:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "439:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "514:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "523:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "518:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "582:118:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "603:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "621:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "608:12:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "608:17:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "596:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "596:30:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "596:30:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "639:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "650:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "655:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "646:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "646:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "639:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "671:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "682:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "687:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "678:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "678:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "671:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "544:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "541:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "541:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "555:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "557:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "566:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "569:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "562:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "562:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "557:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "537:3:33",
                                "statements": []
                              },
                              "src": "533:167:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "58:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "66:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "74:5:33",
                            "type": ""
                          }
                        ],
                        "src": "14:692:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "765:406:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "814:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "823:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "830:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "816:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "816:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "816:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "793:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "801:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "789:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "789:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "808:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "785:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "785:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "778:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "778:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "775:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "847:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "874:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "861:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "861:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "851:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "890:62:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "944:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "914:29:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "914:37:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "899:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "899:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "890:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "968:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "975:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "961:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "961:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "961:21:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1034:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1043:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1046:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1036:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1036:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1036:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1005:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1013:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1001:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1001:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1022:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "997:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "997:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1029:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "994:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "994:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "991:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "1076:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1083:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1072:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1072:16:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1094:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1102:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1090:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1090:17:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1109:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1059:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1059:57:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1059:57:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "1140:5:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1147:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1136:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1136:18:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1156:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1132:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1132:29:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1163:1:33",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1125:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1125:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1125:40:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "739:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "747:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "755:5:33",
                            "type": ""
                          }
                        ],
                        "src": "711:460:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1241:359:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1290:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1299:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1306:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1292:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1292:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1292:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1269:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1277:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1265:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1265:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1284:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1261:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1261:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1254:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1254:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1251:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1323:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1343:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1337:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1337:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1327:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1359:62:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1413:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "1383:29:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1383:37:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1368:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1368:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1359:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1437:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1444:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1430:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1430:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1430:21:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1503:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1512:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1515:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1505:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1505:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1505:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1474:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1482:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1470:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1470:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1491:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1466:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1466:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1498:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1463:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1463:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1460:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1554:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1562:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1550:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1550:17:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "1573:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1580:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1569:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1569:16:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1587:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1528:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1528:66:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1528:66:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1215:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1223:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1231:5:33",
                            "type": ""
                          }
                        ],
                        "src": "1176:424:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1686:731:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1730:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "1739:5:33"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "1746:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1732:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1732:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1732:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1707:3:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1712:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1703:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1703:19:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1724:4:33",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1699:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1699:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1696:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1763:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1783:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1777:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1777:9:33"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1767:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1795:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1817:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1825:4:33",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1813:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1813:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1799:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1839:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1849:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1843:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1926:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "1928:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1928:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1928:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1885:10:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1897:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1882:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1882:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1905:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1917:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1902:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1902:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1879:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1879:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1876:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1955:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1959:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1948:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1948:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1948:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1979:15:33",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1988:6:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1979:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2010:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2024:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "2018:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2018:16:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2003:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2003:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2003:32:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2055:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2063:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2051:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2051:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "2078:9:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2089:2:33",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2074:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2074:18:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "2068:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2068:25:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2044:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2044:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2044:50:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2103:40:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2128:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2139:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2124:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2124:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2118:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2118:25:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2107:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2179:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2152:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2152:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2152:35:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2207:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2215:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2203:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2203:15:33"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2220:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2196:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2196:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2196:32:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2237:39:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2261:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2272:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2257:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2257:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2251:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2251:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2241:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2303:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2312:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2315:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2305:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2305:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2305:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2291:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2299:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2288:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2288:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2285:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2339:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2347:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2335:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2335:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "2386:9:33"
                                          },
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2397:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2382:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2382:22:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "2406:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_bytes_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "2352:29:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2352:58:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2328:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2328:83:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2328:83:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_struct$_GasReceipt_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1657:9:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1668:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1676:5:33",
                            "type": ""
                          }
                        ],
                        "src": "1605:812:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2492:189:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2538:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2547:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2555:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2540:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2540:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2540:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2513:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2522:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2509:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2509:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2534:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2505:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2505:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2502:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2573:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2599:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2586:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2586:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2577:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2645:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2618:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2618:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2618:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2660:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2670:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2660:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2458:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2469:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2481:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2422:259:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2775:182:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2821:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2830:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2838:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2823:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2823:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2823:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2796:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2805:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2792:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2792:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2817:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2788:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2788:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2785:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2856:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2875:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2869:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2869:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2860:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2921:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2894:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2894:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2894:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2936:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2946:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2936:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2741:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2752:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2764:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2686:271:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3068:226:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3114:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3123:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3131:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3116:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3116:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3116:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3089:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3098:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3085:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3085:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3110:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3081:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3081:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3078:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3149:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3168:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3162:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3162:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3153:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3214:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3187:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3187:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3187:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3229:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3239:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3229:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3253:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3273:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3284:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3269:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3269:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3263:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3263:25:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3253:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3026:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3037:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3049:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3057:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2962:332:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3386:315:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3432:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3441:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3449:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3434:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3434:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3434:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3407:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3416:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3403:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3403:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3428:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3399:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3399:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3396:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3467:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3493:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3480:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3480:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3471:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3539:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3512:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3512:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3512:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3554:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3564:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3554:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3578:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3610:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3621:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3606:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3606:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3593:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3593:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3582:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3661:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3634:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3634:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3634:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3678:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3688:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3678:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3344:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3355:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3367:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3375:6:33",
                            "type": ""
                          }
                        ],
                        "src": "3299:402:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3911:932:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3958:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3967:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3975:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3960:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3960:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3960:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3932:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3941:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3928:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3928:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3953:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3924:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3924:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3921:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3993:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4019:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4006:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4006:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3997:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4065:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4038:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4038:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4038:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4080:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4090:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4080:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4104:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4136:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4147:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4132:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4132:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4119:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4119:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4108:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4187:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4160:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4160:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4160:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4204:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4214:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4204:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4230:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4261:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4272:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4257:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4257:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4244:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4244:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4234:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4285:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4295:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4289:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4340:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4349:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4357:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4342:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4342:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4342:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4328:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4336:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4325:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4325:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4322:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4375:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4424:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4435:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4420:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4420:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4444:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4385:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4385:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4375:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4461:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4494:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4505:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4490:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4490:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4477:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4477:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4465:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4538:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4547:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4555:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4540:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4540:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4540:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4524:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4534:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4521:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4521:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4518:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4573:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4622:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4633:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4618:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4618:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4644:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4583:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4583:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4573:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4661:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4694:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4705:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4690:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4690:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4677:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4677:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4665:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4739:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4748:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4756:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4741:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4741:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4741:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4725:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4735:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4722:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4722:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4719:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4774:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4807:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4818:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4803:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4803:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4829:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "4784:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4784:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4774:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address_payablet_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3845:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3856:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3868:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3876:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3884:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3892:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3900:6:33",
                            "type": ""
                          }
                        ],
                        "src": "3706:1137:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4960:366:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5006:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5015:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5023:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5008:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5008:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5008:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4981:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4990:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4977:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4977:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5002:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4973:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4973:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4970:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5041:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5067:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5054:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5054:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5045:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5113:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5086:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5086:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5086:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5128:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5138:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5128:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5152:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5184:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5195:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5180:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5180:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5167:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5167:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5156:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5235:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5208:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5208:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5208:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5252:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5262:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5252:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5278:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5305:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5316:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5301:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5301:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5288:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5288:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5278:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address_payablet_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4910:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4921:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4933:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4941:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4949:6:33",
                            "type": ""
                          }
                        ],
                        "src": "4848:478:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5486:613:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5533:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5542:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5550:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5535:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5535:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5535:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5507:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5516:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5503:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5503:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5528:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5499:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5499:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5496:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5568:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5594:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5581:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5581:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5572:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5640:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5613:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5613:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5613:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5655:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5665:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5655:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5679:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5711:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5722:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5707:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5707:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5694:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5694:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5683:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5762:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5735:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5735:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5735:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5779:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5789:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5779:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5805:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5832:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5843:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5828:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5828:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5815:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5815:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5805:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5856:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5883:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5894:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5879:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5879:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5866:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5866:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5856:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5907:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5938:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5949:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5934:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5934:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5921:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5921:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5911:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5997:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "6006:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "6014:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5999:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5999:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5999:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5969:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5977:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5966:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5966:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5963:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6032:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6065:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6076:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6061:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6061:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6085:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6042:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6042:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "6032:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address_payablet_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5420:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5431:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5443:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5451:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5459:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5467:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5475:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5331:768:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6315:1056:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6362:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6371:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6379:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6364:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6364:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6364:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6336:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6345:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6332:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6332:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6357:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6328:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6328:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6325:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6397:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6423:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6410:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6410:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6401:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6469:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6442:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6442:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6442:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6484:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6494:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6484:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6508:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6540:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6551:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6536:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6536:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6523:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6523:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6512:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6591:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6564:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6564:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6564:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6608:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "6618:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6608:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6634:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6665:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6676:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6661:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6661:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6648:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6648:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6638:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6689:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6699:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6693:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6744:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6753:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6761:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6746:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6746:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6746:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6732:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6740:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6729:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6729:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6726:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6779:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6828:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6839:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6824:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6824:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6848:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "6789:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6789:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6779:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6865:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6898:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6909:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6894:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6894:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6881:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6881:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6869:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6942:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "6951:6:33"
                                        },
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "6959:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6944:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6944:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6944:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6928:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6938:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6925:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6925:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6922:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6977:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7026:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7037:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7022:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7022:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7048:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "6987:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6987:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6977:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7065:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7097:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7108:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7093:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7093:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7080:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7080:33:33"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7069:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7146:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "7122:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7122:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7122:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7163:17:33",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "7173:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "7163:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7189:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7222:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7233:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7218:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7218:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7205:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7205:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7193:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7267:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "7276:6:33"
                                        },
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "7284:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7269:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7269:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7269:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7253:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7263:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7250:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7250:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7247:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7302:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7335:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7346:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7331:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7331:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7357:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7312:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7312:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "7302:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_boolt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6241:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6252:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6264:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6272:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6280:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6288:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "6296:6:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "6304:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6104:1267:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7573:932:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7620:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7629:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7637:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7622:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7622:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7622:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7594:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7603:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7590:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7590:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7615:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7586:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7586:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7583:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7655:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7681:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7668:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7668:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "7659:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7727:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7700:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7700:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7700:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7742:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7752:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7742:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7766:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7798:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7809:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7794:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7794:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7781:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7781:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7770:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7849:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7822:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7822:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7822:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7866:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "7876:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7866:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7892:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7923:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7934:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7919:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7919:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7906:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7906:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7896:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7947:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7957:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7951:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8002:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8011:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8019:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8004:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8004:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8004:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7990:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7998:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7987:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7987:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7984:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8037:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8086:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8097:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8082:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8082:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8106:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "8047:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8047:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8037:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8123:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8156:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8167:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8152:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8152:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8139:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8139:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8127:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8200:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8209:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8217:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8202:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8202:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8202:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8186:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8196:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8183:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8183:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8180:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8235:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8284:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8295:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8280:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8280:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8306:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "8245:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8245:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "8235:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8323:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8356:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8367:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8352:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8352:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8339:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8339:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8327:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8401:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8410:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8418:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8403:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8403:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8403:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "8387:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8397:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8384:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8384:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8381:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8436:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8469:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8480:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8465:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8465:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8491:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "8446:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8446:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "8436:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7507:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7518:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7530:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7538:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7546:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7554:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7562:6:33",
                            "type": ""
                          }
                        ],
                        "src": "7376:1129:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8651:757:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8698:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8707:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8715:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8700:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8700:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8700:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8672:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8681:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8668:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8668:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8693:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8664:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8664:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8661:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8733:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8759:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8746:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8746:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8737:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8805:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8778:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8778:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8778:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8820:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8830:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8820:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8844:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8876:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8887:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8872:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8872:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8859:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8859:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8848:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8927:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8900:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8900:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8900:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8944:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "8954:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8944:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8970:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9002:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9013:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8998:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8998:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8985:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8985:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8974:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9050:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "9026:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9026:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9026:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9067:17:33",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "9077:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9067:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9093:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9125:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9136:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9121:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9121:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9108:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9108:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "9097:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "9173:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "9149:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9149:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9149:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9190:17:33",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "9200:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "9190:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9216:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9247:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9258:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9243:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9243:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9230:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9230:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9220:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9306:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "9315:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "9323:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9308:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9308:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9308:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9278:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9286:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9275:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9275:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9272:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9341:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9374:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9385:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9370:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9370:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9394:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9351:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9351:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9341:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_boolt_boolt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8585:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8596:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8608:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8616:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8624:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8632:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "8640:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8510:898:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9517:366:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9563:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9572:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9580:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9565:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9565:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9565:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9538:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9547:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9534:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9534:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9559:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9530:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9530:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9527:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9598:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9624:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9611:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9611:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9602:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9670:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9643:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9643:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9643:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9685:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9695:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9685:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9709:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9741:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9752:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9737:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9737:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9724:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9724:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9713:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9792:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9765:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9765:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9765:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9809:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "9819:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9809:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9835:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9862:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9873:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9858:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9858:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9845:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9845:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9835:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9467:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9478:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9490:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9498:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9506:6:33",
                            "type": ""
                          }
                        ],
                        "src": "9413:470:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10049:737:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10096:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10105:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10113:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10098:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10098:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10098:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10070:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10079:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10066:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10066:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10091:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10062:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10062:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10059:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10131:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10157:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10144:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10144:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10135:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10203:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10176:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10176:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10176:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10218:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10228:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10218:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10242:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10274:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10285:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10270:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10270:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10257:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10257:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10246:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10325:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10298:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10298:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10298:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10342:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "10352:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10342:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10368:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10395:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10406:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10391:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10391:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10378:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10378:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10368:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10419:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10446:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10457:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10442:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10442:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10429:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10429:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10419:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10470:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10502:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10513:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10498:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10498:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10485:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10485:33:33"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10474:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10551:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "10527:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10527:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10527:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10568:17:33",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "10578:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "10568:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10594:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10625:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10636:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10621:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10621:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10608:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10608:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "10598:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10684:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "10693:6:33"
                                        },
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "10701:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10686:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10686:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10686:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10656:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10664:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10653:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10653:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10650:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10719:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10752:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10763:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10748:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10748:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10772:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "10729:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10729:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "10719:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_boolt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9975:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9986:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9998:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10006:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10014:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10022:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "10030:6:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "10038:6:33",
                            "type": ""
                          }
                        ],
                        "src": "9888:898:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10938:613:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10985:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10994:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "11002:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10987:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10987:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10987:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10959:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10968:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10955:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10955:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10980:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10951:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10951:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10948:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11020:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11046:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11033:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11033:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11024:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11092:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11065:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11065:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11065:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11107:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11117:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11107:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11131:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11163:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11174:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11159:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11159:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11146:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11146:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11135:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11214:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11187:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11187:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11187:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11231:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "11241:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11231:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11257:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11284:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11295:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11280:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11280:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11267:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11267:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11257:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11308:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11335:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11346:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11331:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11331:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11318:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11318:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "11308:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11359:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11390:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11401:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11386:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11386:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11373:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11373:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11363:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11449:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "11458:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "11466:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11451:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11451:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11451:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11421:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11429:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11418:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11418:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11415:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11484:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11517:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "11528:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11513:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11513:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11537:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "11494:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11494:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "11484:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10872:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10883:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10895:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10903:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10911:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10919:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "10927:6:33",
                            "type": ""
                          }
                        ],
                        "src": "10791:760:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11640:312:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11686:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11695:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11703:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11688:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11688:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11688:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11661:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11670:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11657:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11657:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11682:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11653:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11653:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11650:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11721:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11747:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11734:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11734:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11725:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11793:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11766:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11766:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11766:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11808:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11818:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11808:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11832:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11864:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11875:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11860:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11860:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11847:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11847:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11836:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11912:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "11888:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11888:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11888:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11929:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "11939:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11929:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11598:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11609:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11621:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11629:6:33",
                            "type": ""
                          }
                        ],
                        "src": "11556:396:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12096:640:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12143:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "12152:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "12160:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12145:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12145:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12145:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12117:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12126:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12113:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12113:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12138:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12109:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12109:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12106:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12178:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12204:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12191:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12191:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12182:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12250:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12223:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12223:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12223:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12265:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12275:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12265:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12289:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12316:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12327:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12312:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12312:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12299:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12299:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12289:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12340:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12371:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12382:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12367:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12367:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12354:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12354:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12344:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12395:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12405:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12399:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12450:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "12459:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "12467:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12452:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12452:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12452:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12438:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12446:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12435:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12435:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12432:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12485:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12518:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "12529:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12514:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12514:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12538:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "12495:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12495:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "12485:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12555:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12588:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12599:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12584:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12584:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12571:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12571:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12559:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12632:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "12641:6:33"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "12649:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12634:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12634:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12634:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12618:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12628:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12615:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12615:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12612:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12667:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12700:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12711:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12696:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12696:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12722:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "12677:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12677:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "12667:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes32t_bytes_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12038:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12049:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12061:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12069:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12077:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12085:6:33",
                            "type": ""
                          }
                        ],
                        "src": "11957:779:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12828:240:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12874:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12883:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12891:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12876:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12876:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12876:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12849:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12858:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12845:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12845:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12870:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12841:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12841:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12838:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12909:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12935:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12922:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12922:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12913:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12981:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12954:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12954:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12954:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12996:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13006:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12996:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13020:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13047:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13058:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13043:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13043:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13030:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13030:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13020:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12786:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12797:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12809:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12817:6:33",
                            "type": ""
                          }
                        ],
                        "src": "12741:327:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13210:1178:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13256:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13265:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13273:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13258:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13258:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13258:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13231:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13240:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13227:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13227:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13252:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13223:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13223:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13220:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13291:37:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13318:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13305:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13305:23:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "13295:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13337:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13347:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13341:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13392:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13401:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13409:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13394:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13394:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13394:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13380:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13388:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13377:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13377:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13374:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13427:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13441:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13452:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13437:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13437:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "13431:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13507:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13516:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13524:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13509:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13509:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13509:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "13486:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13490:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13482:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13482:13:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13497:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13478:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13478:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13471:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13471:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13468:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13542:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13569:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13556:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13556:16:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "13546:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13581:80:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "13653:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "13607:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13607:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13592:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13592:69:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "13585:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13670:16:33",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "13683:3:33"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13674:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "13702:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13707:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13695:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13695:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13695:19:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13723:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13733:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "13727:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13746:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "13757:3:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "13762:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13753:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13753:12:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "13746:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13774:22:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13789:2:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "13793:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13785:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13785:11:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "13778:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13855:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13864:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13872:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13857:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13857:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13857:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "13819:2:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "13827:6:33"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "13835:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "13823:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "13823:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13815:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13815:24:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "13841:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13811:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13811:33:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13846:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13808:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13808:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13805:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13890:15:33",
                              "value": {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "13899:6:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "13894:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13963:195:33",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "13977:30:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "14003:3:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "13990:12:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13990:17:33"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "13981:5:33",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "14047:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "validator_revert_t_address",
                                        "nodeType": "YulIdentifier",
                                        "src": "14020:26:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14020:33:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14020:33:33"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "14073:3:33"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "14078:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14066:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14066:18:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14066:18:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14097:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "14108:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "14113:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14104:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14104:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "14097:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14129:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "14140:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "14145:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14136:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14136:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "14129:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "13925:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13928:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13922:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13922:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "13936:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13938:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "13947:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13950:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13943:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13943:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "13938:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "13918:3:33",
                                "statements": []
                              },
                              "src": "13914:244:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14167:15:33",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "14177:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14167:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14191:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14224:9:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "14235:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14220:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14220:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14207:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14207:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14195:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14268:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14277:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14285:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14270:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14270:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14270:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14254:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14264:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14251:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14251:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "14248:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14303:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14352:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14363:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14348:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14348:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "14374:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "14313:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14313:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14303:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13168:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13179:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13191:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13199:6:33",
                            "type": ""
                          }
                        ],
                        "src": "13073:1315:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14471:179:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14517:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14526:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14534:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14519:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14519:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14519:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14492:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14501:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14488:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14488:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14513:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14484:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14484:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "14481:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14552:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14571:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14565:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14565:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "14556:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14614:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "14590:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14590:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14590:30:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14629:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14639:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14629:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14437:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14448:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14460:6:33",
                            "type": ""
                          }
                        ],
                        "src": "14393:257:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14724:283:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14770:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14779:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14787:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14772:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14772:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14772:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14745:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14754:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14741:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14741:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14766:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14737:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14737:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "14734:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14805:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14831:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14818:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14818:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "14809:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14951:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14960:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14968:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14953:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14953:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14953:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "14863:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "14874:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14881:66:33",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "14870:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14870:78:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "14860:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14860:89:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "14853:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14853:97:33"
                              },
                              "nodeType": "YulIf",
                              "src": "14850:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14986:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14996:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14986:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14690:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14701:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14713:6:33",
                            "type": ""
                          }
                        ],
                        "src": "14655:352:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15128:476:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15174:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15183:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15191:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15176:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15176:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15176:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15149:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15158:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15145:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15145:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15170:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15141:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15141:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "15138:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15209:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15229:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15223:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15223:16:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15213:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15248:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15258:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15252:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15303:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15312:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15320:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15305:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15305:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15305:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15291:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15299:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15288:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15288:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "15285:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15338:72:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15382:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15393:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15378:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15378:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15402:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "15348:29:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15348:62:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15338:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15419:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15445:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15456:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15441:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15441:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15435:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15435:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15423:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15489:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "15498:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "15506:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15491:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15491:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15491:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15475:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15485:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15472:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15472:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "15469:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15524:74:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15568:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15579:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15564:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15564:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15590:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "15534:29:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15534:64:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "15524:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15086:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15097:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15109:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15117:6:33",
                            "type": ""
                          }
                        ],
                        "src": "15012:592:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15718:280:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15764:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15773:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15781:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15766:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15766:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15766:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15739:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15748:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15735:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15735:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15760:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15731:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15731:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "15728:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15799:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15819:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15813:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15813:16:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15803:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15872:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15881:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15889:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15874:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15874:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15874:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15844:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15852:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15841:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15841:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "15838:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15907:85:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15964:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15975:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15960:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15960:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15984:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_struct$_GasReceipt_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "15917:42:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15917:75:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15907:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15684:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15695:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15707:6:33",
                            "type": ""
                          }
                        ],
                        "src": "15609:389:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16138:489:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16184:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16193:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16201:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16186:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16186:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16186:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16159:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16168:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16155:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16155:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16180:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16151:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16151:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "16148:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16219:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16239:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16233:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16233:16:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "16223:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16258:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16268:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16262:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16313:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16322:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16330:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16315:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16315:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16315:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "16301:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16309:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16298:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16298:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "16295:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16348:85:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16405:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "16416:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16401:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16401:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "16425:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_struct$_GasReceipt_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "16358:42:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16358:75:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16348:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16442:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16468:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16479:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16464:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16464:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16458:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16458:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16446:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16512:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16521:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16529:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16514:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16514:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16514:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16498:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16508:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16495:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16495:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "16492:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16547:74:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16591:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16602:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16587:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16587:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "16613:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "16557:29:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16557:64:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "16547:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptrt_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16096:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16107:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16119:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16127:6:33",
                            "type": ""
                          }
                        ],
                        "src": "16003:624:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16702:120:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16748:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16757:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16765:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16750:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16750:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16750:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16723:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16732:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16719:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16719:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16744:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16715:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16715:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "16712:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16783:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16806:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16793:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16793:23:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16783:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16668:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16679:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16691:6:33",
                            "type": ""
                          }
                        ],
                        "src": "16632:190:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16996:376:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17006:16:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "17019:3:33"
                              },
                              "variables": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17010:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17031:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17051:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17045:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17045:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "17035:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17067:12:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "17076:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "17067:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17088:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17098:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17092:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17111:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17129:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17137:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17125:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17125:15:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "17115:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17149:12:33",
                              "value": {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "17158:3:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "17153:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17219:126:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "17240:5:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "17253:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "17247:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17247:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "17233:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17233:28:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17233:28:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "17274:23:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "17287:5:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "17294:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "17283:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17283:14:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17274:5:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "17310:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "17324:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "17332:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "17320:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17320:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17310:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "17181:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "17184:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17178:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17178:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "17192:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "17194:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "17203:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17206:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "17199:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17199:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "17194:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "17174:3:33",
                                "statements": []
                              },
                              "src": "17170:175:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17354:12:33",
                              "value": {
                                "name": "pos_1",
                                "nodeType": "YulIdentifier",
                                "src": "17361:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "17354:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "16972:3:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16977:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "16988:3:33",
                            "type": ""
                          }
                        ],
                        "src": "16827:545:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17570:244:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17580:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17600:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17594:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17594:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "17584:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17642:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17650:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17638:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17638:17:33"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "17657:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "17662:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "17616:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17616:53:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17616:53:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17678:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "17695:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "17700:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17691:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17691:16:33"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17682:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17723:5:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17730:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17716:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17716:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17716:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17757:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17764:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17753:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17753:16:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "17771:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17746:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17746:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17746:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17787:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17798:5:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17805:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17794:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17794:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "17787:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes32__to_t_bytes_memory_ptr_t_uint256_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "17530:3:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17535:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17543:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17551:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "17562:3:33",
                            "type": ""
                          }
                        ],
                        "src": "17377:437:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18030:335:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18040:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18060:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18054:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18054:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "18044:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18102:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18110:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18098:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18098:17:33"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "18117:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18122:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "18076:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18076:53:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18076:53:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18138:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "18155:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18160:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18151:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18151:16:33"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18142:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18183:5:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18190:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18176:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18176:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18176:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18206:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "18228:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18222:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18222:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18210:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18270:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18278:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18266:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18266:17:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18289:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18296:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18285:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18285:16:33"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18303:8:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "18244:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18244:68:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18244:68:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18321:38:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18336:5:33"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18343:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18332:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18332:20:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18354:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18328:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18328:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "18321:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "17990:3:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17995:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18003:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18011:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "18022:3:33",
                            "type": ""
                          }
                        ],
                        "src": "17819:546:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18561:14:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18563:10:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "18570:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "18563:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "18545:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "18553:3:33",
                            "type": ""
                          }
                        ],
                        "src": "18370:205:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18681:125:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18691:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18703:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18714:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18699:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18699:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18691:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18733:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18748:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18756:42:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18744:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18744:55:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18726:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18726:74:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18726:74:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18650:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18661:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18672:4:33",
                            "type": ""
                          }
                        ],
                        "src": "18580:226:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18984:241:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18994:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19006:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19017:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19002:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19002:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18994:4:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19029:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19039:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19033:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19097:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19112:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19120:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19108:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19108:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19090:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19090:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19090:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19144:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19155:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19140:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19140:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19164:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19172:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19160:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19160:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19133:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19133:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19133:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19196:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19207:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19192:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19192:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "19212:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19185:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19185:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19185:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_address_payable_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18937:9:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18948:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18956:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18964:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18975:4:33",
                            "type": ""
                          }
                        ],
                        "src": "18811:414:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19367:168:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19377:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19389:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19400:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19385:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19385:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19377:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19419:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19434:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19442:42:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19430:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19430:55:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19412:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19412:74:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19412:74:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19506:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19517:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19502:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19502:18:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19522:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19495:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19495:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19495:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19328:9:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19339:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19347:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19358:4:33",
                            "type": ""
                          }
                        ],
                        "src": "19230:305:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19697:241:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19707:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19719:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19730:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19715:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19715:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19707:4:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19742:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19752:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19746:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19810:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19825:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19833:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19821:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19821:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19803:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19803:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19803:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19857:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19868:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19853:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19853:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19877:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19885:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19873:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19873:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19846:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19846:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19846:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19909:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19920:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19905:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19905:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "19925:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19898:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19898:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19898:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19650:9:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19661:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19669:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19677:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19688:4:33",
                            "type": ""
                          }
                        ],
                        "src": "19540:398:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20228:368:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20238:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "20248:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20242:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20306:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20321:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20329:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20317:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20317:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20299:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20299:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20299:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20353:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20364:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20349:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20349:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20373:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20381:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20369:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20369:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20342:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20342:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20342:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20405:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20416:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20401:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20401:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "20421:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20394:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20394:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20394:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20448:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20459:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20444:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20444:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "20464:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20437:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20437:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20437:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20491:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20502:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20487:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20487:19:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20508:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20480:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20480:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20480:32:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20532:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20543:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20528:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20528:19:33"
                                  },
                                  {
                                    "name": "tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "20549:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20521:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20521:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20521:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20563:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20575:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20586:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20571:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20571:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20563:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20173:9:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "20184:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20192:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20200:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20208:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20219:4:33",
                            "type": ""
                          }
                        ],
                        "src": "19943:653:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20730:168:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20740:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20752:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20763:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20748:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20748:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20740:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20782:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20797:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20805:42:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20793:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20793:55:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20775:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20775:74:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20775:74:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20869:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20880:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20865:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20865:18:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20885:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20858:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20858:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20858:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20691:9:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20702:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20710:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20721:4:33",
                            "type": ""
                          }
                        ],
                        "src": "20601:297:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21054:484:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21064:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21074:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21068:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21085:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21103:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21114:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21099:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21099:18:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21089:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21133:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21144:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21126:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21126:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21126:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21156:17:33",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "21167:6:33"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "21160:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21182:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21202:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21196:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21196:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "21186:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21225:6:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "21233:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21218:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21218:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21218:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21249:25:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21260:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21271:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21256:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21256:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "21249:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21283:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21301:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21309:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21297:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21297:15:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "21287:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21321:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "21330:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "21325:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21392:120:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "21413:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "21424:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "21418:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "21418:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21406:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21406:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21406:26:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "21445:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "21456:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "21461:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "21452:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21452:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "21445:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "21477:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "21491:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "21499:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "21487:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21487:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21477:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "21354:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "21357:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21351:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21351:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "21365:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "21367:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "21376:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21379:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "21372:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21372:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "21367:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "21347:3:33",
                                "statements": []
                              },
                              "src": "21343:169:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21521:11:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "21529:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21521:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21023:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21034:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21045:4:33",
                            "type": ""
                          }
                        ],
                        "src": "20903:635:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21638:92:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21648:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21660:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21671:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21656:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21656:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21648:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21690:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "21715:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "21708:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21708:14:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "21701:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21701:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21683:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21683:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21683:41:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21607:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21618:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21629:4:33",
                            "type": ""
                          }
                        ],
                        "src": "21543:187:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21976:373:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21986:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21998:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22009:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21994:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21994:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21986:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22029:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "22040:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22022:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22022:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22022:25:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22056:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22066:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22060:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22128:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22139:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22124:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22124:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22148:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22156:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22144:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22144:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22117:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22117:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22117:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22180:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22191:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22176:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22176:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22200:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22208:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22196:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22196:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22169:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22169:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22169:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22232:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22243:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22228:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22228:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "22248:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22221:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22221:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22221:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22275:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22286:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22271:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22271:19:33"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "22292:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22264:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22264:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22264:35:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22319:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22330:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22315:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22315:19:33"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "22336:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22308:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22308:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22308:35:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21905:9:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "21916:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "21924:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "21932:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "21940:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "21948:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21956:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21967:4:33",
                            "type": ""
                          }
                        ],
                        "src": "21735:614:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22567:329:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "22577:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22589:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22600:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22585:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22585:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22577:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22620:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "22631:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22613:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22613:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22613:25:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22647:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22657:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22651:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22719:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22730:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22715:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22715:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22739:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22747:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22735:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22735:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22708:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22708:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22708:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22771:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22782:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22767:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22767:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22791:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22799:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22787:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22787:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22760:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22760:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22760:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22823:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22834:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22819:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22819:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "22839:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22812:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22812:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22812:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22866:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22877:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22862:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22862:19:33"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "22883:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22855:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22855:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22855:35:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22504:9:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "22515:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "22523:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "22531:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "22539:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22547:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22558:4:33",
                            "type": ""
                          }
                        ],
                        "src": "22354:542:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23142:373:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23152:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23164:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23175:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23160:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23160:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23152:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23195:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "23206:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23188:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23188:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23188:25:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23222:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23232:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23226:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23294:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23305:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23290:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23290:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23314:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23322:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23310:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23310:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23283:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23283:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23283:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23346:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23357:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23342:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23342:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23366:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23374:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23362:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23362:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23335:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23335:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23335:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23398:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23409:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23394:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23394:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "23414:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23387:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23387:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23387:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23441:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23452:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23437:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23437:19:33"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "23458:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23430:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23430:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23430:35:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23485:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23496:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23481:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23481:19:33"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "23502:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23474:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23474:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23474:35:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23071:9:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "23082:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "23090:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "23098:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "23106:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "23114:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23122:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23133:4:33",
                            "type": ""
                          }
                        ],
                        "src": "22901:614:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23619:149:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23629:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23641:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23652:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23637:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23637:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23629:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23671:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "23686:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23694:66:33",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23682:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23682:79:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23664:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23664:98:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23664:98:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23588:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23599:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23610:4:33",
                            "type": ""
                          }
                        ],
                        "src": "23520:248:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23947:235:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23964:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23975:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23957:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23957:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23957:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23998:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24009:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23994:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23994:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24014:2:33",
                                    "type": "",
                                    "value": "45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23987:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23987:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23987:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24037:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24048:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24033:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24033:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24053:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#deposit: INCORR"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24026:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24026:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24026:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24108:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24119:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24104:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24104:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24124:15:33",
                                    "type": "",
                                    "value": "ECT_MSG_VALUE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24097:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24097:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24097:43:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24149:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24161:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24172:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24157:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24157:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24149:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_18ab744e6275fc2611ea3f469ab0998d462afdc8fb55fa1f0baa2f290c1dd8e8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23924:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23938:4:33",
                            "type": ""
                          }
                        ],
                        "src": "23773:409:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24361:233:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24378:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24389:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24371:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24371:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24371:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24412:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24423:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24408:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24408:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24428:2:33",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24401:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24401:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24401:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24451:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24462:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24447:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24447:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24467:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#deposit: INVALI"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24440:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24440:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24440:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24522:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24533:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24518:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24518:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24538:13:33",
                                    "type": "",
                                    "value": "D_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24511:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24511:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24511:41:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24561:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24573:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24584:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24569:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24569:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24561:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_19a3130b3f25d805cc5717b6ec577f621b2eda36caf4381b0de60002320d245d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24338:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24352:4:33",
                            "type": ""
                          }
                        ],
                        "src": "24187:407:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24773:250:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24790:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24801:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24783:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24783:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24783:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24824:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24835:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24820:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24820:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24840:2:33",
                                    "type": "",
                                    "value": "60"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24813:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24813:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24813:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24863:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24874:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24859:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24859:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24879:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#onERC1155Receiv"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24852:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24852:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24852:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24934:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24945:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24930:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24930:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24950:30:33",
                                    "type": "",
                                    "value": "ed: INVALID_ERC1155_RECEIVED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24923:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24923:58:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24923:58:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24990:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25002:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25013:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24998:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24998:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24990:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_298f8b1a7d09e54e9ad5dfd1b230710353cd7e0c23bec42e628b01c9bef64671__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24750:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24764:4:33",
                            "type": ""
                          }
                        ],
                        "src": "24599:424:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25202:234:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25219:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25230:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25212:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25212:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25212:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25253:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25264:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25249:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25249:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25269:2:33",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25242:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25242:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25242:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25292:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25303:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25288:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25288:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25308:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#deposit: NON_NU"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25281:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25281:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25281:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25363:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25374:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25359:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25359:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25379:14:33",
                                    "type": "",
                                    "value": "LL_MSG_VALUE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25352:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25352:42:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25352:42:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25403:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25415:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25426:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25411:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25411:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25403:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_52e2325dc5a388253b111b94bbca717f4138da2fa7211fcfb41ba013239fcc9e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25179:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25193:4:33",
                            "type": ""
                          }
                        ],
                        "src": "25028:408:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25615:231:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25632:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25643:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25625:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25625:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25625:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25666:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25677:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25662:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25662:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25682:2:33",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25655:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25655:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25655:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25705:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25716:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25701:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25701:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25721:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#deposit: TRANSF"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25694:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25694:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25694:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25776:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25787:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25772:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25772:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25792:11:33",
                                    "type": "",
                                    "value": "ER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25765:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25765:39:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25765:39:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25813:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25825:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25836:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25821:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25821:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25813:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_60c012ac410bc331a9c5c1e4b0a28751cc566065127914b00b9ee80212c2c0ff__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25592:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25606:4:33",
                            "type": ""
                          }
                        ],
                        "src": "25441:405:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26025:241:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26042:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26053:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26035:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26035:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26035:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26076:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26087:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26072:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26072:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26092:2:33",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26065:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26065:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26065:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26115:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26126:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26111:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26111:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26131:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#metaSafeTransferFrom"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26104:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26104:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26104:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26186:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26197:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26182:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26182:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26202:21:33",
                                    "type": "",
                                    "value": ": INVALID_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26175:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26175:49:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26175:49:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26233:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26245:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26256:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26241:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26241:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26233:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_61f5777e4201d0cacc6b01e4df7af612fe611d3e31e7f11d609bf3a8c318735e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26002:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26016:4:33",
                            "type": ""
                          }
                        ],
                        "src": "25851:415:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26445:241:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26462:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26473:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26455:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26455:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26455:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26496:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26507:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26492:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26492:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26512:2:33",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26485:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26485:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26485:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26535:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26546:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26531:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26531:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26551:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_signatureValidation"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26524:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26524:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26524:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26606:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26617:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26602:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26602:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26622:21:33",
                                    "type": "",
                                    "value": ": INVALID_SIGNATURE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26595:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26595:49:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26595:49:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26653:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26665:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26676:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26661:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26661:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26653:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d3eb5c55a58dcdb83f34d1ad1e9a04e3cf6fabf83d70f1a41fc7973311b6fd4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26422:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26436:4:33",
                            "type": ""
                          }
                        ],
                        "src": "26271:415:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26865:295:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26882:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26893:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26875:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26875:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26875:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26916:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26927:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26912:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26912:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26932:2:33",
                                    "type": "",
                                    "value": "65"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26905:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26905:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26905:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26955:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26966:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26951:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26951:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26971:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#onERC1155BatchR"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26944:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26944:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26944:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27026:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27037:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27022:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27022:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27042:34:33",
                                    "type": "",
                                    "value": "eceived: INVALID_ERC1155_RECEIVE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27015:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27015:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27015:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27097:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27108:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27093:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27093:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27114:3:33",
                                    "type": "",
                                    "value": "D"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27086:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27086:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27086:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27127:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27139:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27150:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27135:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27135:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27127:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7f7fa389c177bc9787ac2c6dd7e77b288a431fbd01f0543daeaf9e12dd96ceb6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26842:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26856:4:33",
                            "type": ""
                          }
                        ],
                        "src": "26691:469:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27339:234:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27356:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27367:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27349:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27349:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27349:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27390:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27401:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27386:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27386:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27406:2:33",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27379:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27379:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27379:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27429:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27440:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27425:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27425:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27445:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#withdraw: INVAL"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27418:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27418:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27418:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27500:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27511:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27496:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27496:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27516:14:33",
                                    "type": "",
                                    "value": "ID_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27489:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27489:42:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27489:42:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27540:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27552:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27563:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27548:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27548:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27540:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a3ff64274638dcdb2ba8a07eb1491f949b7ab0bfeb2b25cede5a4a3c65ef7065__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27316:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27330:4:33",
                            "type": ""
                          }
                        ],
                        "src": "27165:408:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27752:239:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27769:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27780:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27762:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27762:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27762:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27803:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27814:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27799:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27799:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27819:2:33",
                                    "type": "",
                                    "value": "49"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27792:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27792:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27792:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27842:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27853:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27838:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27838:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27858:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#getIdAddress: U"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27831:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27831:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27831:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27913:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27924:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27909:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27909:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27929:19:33",
                                    "type": "",
                                    "value": "NREGISTERED_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27902:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27902:47:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27902:47:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27958:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27970:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27981:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27966:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27966:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27958:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a400c79cc9e4d63fe5f7c90f141f667cd9b84b276de2c465e0102adb91057b61__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27729:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27743:4:33",
                            "type": ""
                          }
                        ],
                        "src": "27578:413:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28170:240:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28187:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28198:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28180:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28180:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28180:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28221:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28232:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28217:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28217:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28237:2:33",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28210:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28210:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28210:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28260:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28271:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28256:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28256:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28276:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_transferGasFee: ERC"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28249:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28249:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28249:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28331:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28342:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28327:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28327:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28347:20:33",
                                    "type": "",
                                    "value": "20_TRANSFER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28320:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28320:48:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28320:48:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28377:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28389:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28400:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28385:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28385:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28377:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a4c4f8821c7e12dec6fe310a34d8ff084ce99b654e4106a50c39bdfc34cbf202__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28147:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28161:4:33",
                            "type": ""
                          }
                        ],
                        "src": "27996:414:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28589:246:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28606:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28617:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28599:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28599:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28599:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28640:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28651:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28636:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28636:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28656:2:33",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28629:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28629:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28629:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28679:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28690:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28675:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28675:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28695:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#metaSafeBatchTransfe"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28668:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28668:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28668:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28750:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28761:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28746:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28746:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28766:26:33",
                                    "type": "",
                                    "value": "rFrom: INVALID_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28739:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28739:54:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28739:54:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28802:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28814:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28825:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28810:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28810:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28802:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c35c815541f857ca65052edde63901642b7e03e43bf83eec95218f874a8fdd62__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28566:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28580:4:33",
                            "type": ""
                          }
                        ],
                        "src": "28415:420:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29014:232:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29031:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29042:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29024:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29024:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29024:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29065:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29076:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29061:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29061:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29081:2:33",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29054:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29054:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29054:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29104:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29115:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29100:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29100:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29120:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#withdraw: TRANS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29093:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29093:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29093:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29175:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29186:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29171:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29171:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29191:12:33",
                                    "type": "",
                                    "value": "FER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29164:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29164:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29164:40:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29213:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29225:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29236:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29221:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29221:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29213:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d7528a6cd90ae2fb6c5a0652ba5ca5a48bc570d63bd727556bdfb948863fb826__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28991:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29005:4:33",
                            "type": ""
                          }
                        ],
                        "src": "28840:406:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29425:237:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29442:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29453:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29435:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29435:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29435:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29476:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29487:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29472:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29472:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29492:2:33",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29465:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29465:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29465:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29515:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29526:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29511:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29511:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29531:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#getTokenID: UNR"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29504:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29504:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29504:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29586:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29597:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29582:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29582:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29602:17:33",
                                    "type": "",
                                    "value": "EGISTERED_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29575:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29575:45:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29575:45:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29629:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29641:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29652:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29637:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29637:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29629:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e3ddbb34173b4d53b1858796a31b67c7ca88e7d9b7db4a44c73d3f1be7545c29__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29402:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29416:4:33",
                            "type": ""
                          }
                        ],
                        "src": "29251:411:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29841:237:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29858:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29869:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29851:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29851:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29851:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29892:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29903:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29888:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29888:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29908:2:33",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29881:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29881:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29881:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29931:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29942:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29927:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29927:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29947:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_signatureValidation"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29920:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29920:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29920:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30002:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30013:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29998:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29998:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30018:17:33",
                                    "type": "",
                                    "value": ": INVALID_NONCE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29991:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29991:45:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29991:45:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30045:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30057:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30068:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30053:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30053:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30045:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ff42cead1b7c6f0abed83c5e256b3e3ae18800a9206b9735befc73357d914de5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29818:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29832:4:33",
                            "type": ""
                          }
                        ],
                        "src": "29667:411:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30257:236:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30274:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30285:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30267:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30267:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30267:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30308:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30319:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30304:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30304:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30324:2:33",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30297:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30297:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30297:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30347:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30358:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30343:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30343:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30363:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_transferGasFee: UNS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30336:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30336:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30336:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30418:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30429:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30414:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30414:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30434:16:33",
                                    "type": "",
                                    "value": "UPPORTED_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30407:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30407:44:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30407:44:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30460:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30472:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30483:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30468:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30468:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30460:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ff7a2afde0cf20930776bc6456716ff6f86d3807496d5fb53db8b79cc341816a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30234:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30248:4:33",
                            "type": ""
                          }
                        ],
                        "src": "30083:410:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30599:76:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "30609:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30621:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30632:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30617:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30617:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30609:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30651:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "30662:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30644:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30644:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30644:25:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30568:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "30579:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30590:4:33",
                            "type": ""
                          }
                        ],
                        "src": "30498:177:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30724:198:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "30734:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30750:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "30744:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30744:9:33"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "30734:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30762:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "30784:6:33"
                                  },
                                  {
                                    "name": "size",
                                    "nodeType": "YulIdentifier",
                                    "src": "30792:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30780:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30780:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "30766:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30872:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "30874:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30874:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30874:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30815:10:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30827:18:33",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "30812:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30812:34:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30851:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30863:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "30848:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30848:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "30809:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30809:62:33"
                              },
                              "nodeType": "YulIf",
                              "src": "30806:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30901:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "30905:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30894:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30894:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30894:22:33"
                            }
                          ]
                        },
                        "name": "allocateMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "30704:4:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "30713:6:33",
                            "type": ""
                          }
                        ],
                        "src": "30680:242:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31002:108:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31046:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "31048:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31048:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31048:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31018:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31026:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31015:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31015:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "31012:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31068:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "31084:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31092:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "31080:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31080:17:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31099:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31076:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31076:28:33"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "31068:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_t_array$_t_address_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "30982:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "30993:4:33",
                            "type": ""
                          }
                        ],
                        "src": "30927:183:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31174:181:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31218:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "31220:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31220:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31220:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31190:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31198:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31187:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31187:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "31184:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31240:109:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "31260:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "31268:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "31256:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31256:17:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31275:66:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "31252:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31252:90:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31344:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31248:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31248:101:33"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "31240:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_t_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "31154:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "31165:4:33",
                            "type": ""
                          }
                        ],
                        "src": "31115:240:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31413:205:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31423:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "31432:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "31427:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31492:63:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "31517:3:33"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "31522:1:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "31513:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "31513:11:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "31536:3:33"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "31541:1:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "31532:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "31532:11:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "31526:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "31526:18:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "31506:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31506:39:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31506:39:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "31453:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31456:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31450:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31450:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "31464:19:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "31466:15:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "31475:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31478:2:33",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "31471:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31471:10:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "31466:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "31446:3:33",
                                "statements": []
                              },
                              "src": "31442:113:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31581:31:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "31594:3:33"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "31599:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "31590:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "31590:16:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31608:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "31583:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31583:27:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31583:27:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "31570:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31573:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31567:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31567:13:33"
                              },
                              "nodeType": "YulIf",
                              "src": "31564:2:33"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "31391:3:33",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "31396:3:33",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "31401:6:33",
                            "type": ""
                          }
                        ],
                        "src": "31360:258:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31670:109:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31757:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31766:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31769:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31759:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31759:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31759:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "31693:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "31704:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "31711:42:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "31700:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31700:54:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "31690:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31690:65:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31683:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31683:73:33"
                              },
                              "nodeType": "YulIf",
                              "src": "31680:2:33"
                            }
                          ]
                        },
                        "name": "validator_revert_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "31659:5:33",
                            "type": ""
                          }
                        ],
                        "src": "31623:156:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31828:76:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31882:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31891:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31894:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31884:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31884:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31884:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "31851:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "31872:5:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "31865:6:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31865:13:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "31858:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31858:21:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "31848:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31848:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31841:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31841:40:33"
                              },
                              "nodeType": "YulIf",
                              "src": "31838:2:33"
                            }
                          ]
                        },
                        "name": "validator_revert_t_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "31817:5:33",
                            "type": ""
                          }
                        ],
                        "src": "31784:120:33"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_t_array$_t_uint256_$dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst := array\n        mstore(array, length)\n        let _1 := 0x20\n        dst := add(array, _1)\n        let src := add(offset, _1)\n        if gt(add(add(offset, mul(length, _1)), _1), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n    }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_bytes(length))\n        mstore(array, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array, length), 0x20), 0)\n    }\n    function abi_decode_t_bytes_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := mload(offset)\n        array := allocateMemory(array_allocation_size_t_bytes(length))\n        mstore(array, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        copy_memory_to_memory(add(offset, 0x20), add(array, 0x20), length)\n    }\n    function abi_decode_t_struct$_GasReceipt_fromMemory(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x80) { revert(value, value) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x80)\n        let _1 := 0xffffffffffffffff\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        mstore(memPtr, mload(headStart))\n        mstore(add(memPtr, 32), mload(add(headStart, 32)))\n        let value_1 := mload(add(headStart, 64))\n        validator_revert_t_address(value_1)\n        mstore(add(memPtr, 64), value_1)\n        let offset := mload(add(headStart, 96))\n        if gt(offset, _1) { revert(0, 0) }\n        mstore(add(memPtr, 96), abi_decode_t_bytes_fromMemory(add(headStart, offset), end))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_address_payablet_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_address_payablet_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_address_payablet_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_boolt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value5, value5) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let value_2 := calldataload(add(headStart, 128))\n        validator_revert_t_bool(value_2)\n        value4 := value_2\n        let offset_2 := calldataload(add(headStart, 160))\n        if gt(offset_2, _1) { revert(value5, value5) }\n        value5 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_boolt_boolt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_t_bool(value_2)\n        value2 := value_2\n        let value_3 := calldataload(add(headStart, 96))\n        validator_revert_t_bool(value_3)\n        value3 := value_3\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_boolt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_2 := calldataload(add(headStart, 128))\n        validator_revert_t_bool(value_2)\n        value4 := value_2\n        let offset := calldataload(add(headStart, 160))\n        if gt(offset, 0xffffffffffffffff) { revert(value5, value5) }\n        value5 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_bytes32t_bytes_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let length := calldataload(_2)\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _3 := 0x20\n        dst := add(dst, _3)\n        let src := add(_2, _3)\n        if gt(add(add(_2, mul(length, _3)), _3), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let value := calldataload(src)\n            validator_revert_t_address(value)\n            mstore(dst, value)\n            dst := add(dst, _3)\n            src := add(src, _3)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _3))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        value0 := abi_decode_t_bytes_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_bytes_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_GasReceipt_fromMemory(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptrt_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_GasReceipt_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_bytes_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_packed_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let pos_1 := pos\n        let length := mload(value0)\n        pos_1 := pos\n        let _1 := 0x20\n        let srcPtr := add(value0, _1)\n        let i := end\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos_1, mload(srcPtr))\n            pos_1 := add(pos_1, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos_1\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes32__to_t_bytes_memory_ptr_t_uint256_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        mstore(end_1, value1)\n        mstore(add(end_1, 0x20), value2)\n        end := add(end_1, 64)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        mstore(end_1, value1)\n        let length_1 := mload(value2)\n        copy_memory_to_memory(add(value2, 0x20), add(end_1, 0x20), length_1)\n        end := add(add(end_1, length_1), 0x20)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_payable_t_address_payable_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        mstore(add(headStart, 160), tail)\n        tail := add(headStart, 192)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_encode_tuple_t_stringliteral_18ab744e6275fc2611ea3f469ab0998d462afdc8fb55fa1f0baa2f290c1dd8e8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#deposit: INCORR\")\n        mstore(add(headStart, 96), \"ECT_MSG_VALUE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_19a3130b3f25d805cc5717b6ec577f621b2eda36caf4381b0de60002320d245d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#deposit: INVALI\")\n        mstore(add(headStart, 96), \"D_RECIPIENT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_298f8b1a7d09e54e9ad5dfd1b230710353cd7e0c23bec42e628b01c9bef64671__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 60)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#onERC1155Receiv\")\n        mstore(add(headStart, 96), \"ed: INVALID_ERC1155_RECEIVED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_52e2325dc5a388253b111b94bbca717f4138da2fa7211fcfb41ba013239fcc9e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#deposit: NON_NU\")\n        mstore(add(headStart, 96), \"LL_MSG_VALUE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_60c012ac410bc331a9c5c1e4b0a28751cc566065127914b00b9ee80212c2c0ff__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#deposit: TRANSF\")\n        mstore(add(headStart, 96), \"ER_FAILED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_61f5777e4201d0cacc6b01e4df7af612fe611d3e31e7f11d609bf3a8c318735e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"ERC1155Meta#metaSafeTransferFrom\")\n        mstore(add(headStart, 96), \": INVALID_RECIPIENT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6d3eb5c55a58dcdb83f34d1ad1e9a04e3cf6fabf83d70f1a41fc7973311b6fd4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"ERC1155Meta#_signatureValidation\")\n        mstore(add(headStart, 96), \": INVALID_SIGNATURE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7f7fa389c177bc9787ac2c6dd7e77b288a431fbd01f0543daeaf9e12dd96ceb6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 65)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#onERC1155BatchR\")\n        mstore(add(headStart, 96), \"eceived: INVALID_ERC1155_RECEIVE\")\n        mstore(add(headStart, 128), \"D\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_a3ff64274638dcdb2ba8a07eb1491f949b7ab0bfeb2b25cede5a4a3c65ef7065__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#withdraw: INVAL\")\n        mstore(add(headStart, 96), \"ID_RECIPIENT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_a400c79cc9e4d63fe5f7c90f141f667cd9b84b276de2c465e0102adb91057b61__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#getIdAddress: U\")\n        mstore(add(headStart, 96), \"NREGISTERED_TOKEN\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_a4c4f8821c7e12dec6fe310a34d8ff084ce99b654e4106a50c39bdfc34cbf202__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC1155Meta#_transferGasFee: ERC\")\n        mstore(add(headStart, 96), \"20_TRANSFER_FAILED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c35c815541f857ca65052edde63901642b7e03e43bf83eec95218f874a8fdd62__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"ERC1155Meta#metaSafeBatchTransfe\")\n        mstore(add(headStart, 96), \"rFrom: INVALID_RECIPIENT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_d7528a6cd90ae2fb6c5a0652ba5ca5a48bc570d63bd727556bdfb948863fb826__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#withdraw: TRANS\")\n        mstore(add(headStart, 96), \"FER_FAILED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e3ddbb34173b4d53b1858796a31b67c7ca88e7d9b7db4a44c73d3f1be7545c29__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#getTokenID: UNR\")\n        mstore(add(headStart, 96), \"EGISTERED_TOKEN\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ff42cead1b7c6f0abed83c5e256b3e3ae18800a9206b9735befc73357d914de5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC1155Meta#_signatureValidation\")\n        mstore(add(headStart, 96), \": INVALID_NONCE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ff7a2afde0cf20930776bc6456716ff6f86d3807496d5fb53db8b79cc341816a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC1155Meta#_transferGasFee: UNS\")\n        mstore(add(headStart, 96), \"UPPORTED_TOKEN\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_array$_t_address_$dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(mul(length, 0x20), 0x20)\n    }\n    function array_allocation_size_t_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_t_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n}",
                  "id": 33,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106101475760003560e01c8063a22cb465116100c0578063e985e9c511610074578063f242432a11610059578063f242432a14610391578063f5d4c820146103b1578063fa4e12d7146103d15761015a565b8063e985e9c514610351578063f23a6e61146103715761015a565b8063bc197c81116100a5578063bc197c81146102e4578063ce0b514b14610311578063d9caed12146103315761015a565b8063a22cb465146102a4578063a3d4926e146102c45761015a565b80634e1273f4116101175780637358e9a5116100fc5780637358e9a51461024f5780638340f5491461027c5780639040a9491461028f5761015a565b80634e1273f41461020257806363f8071c1461022f5761015a565b8062fdd58e1461015f57806301ffc9a7146101955780632d0335ab146101c25780632eb2c2d6146101e25761015a565b3661015a57610158600133346103f1565b005b600080fd5b34801561016b57600080fd5b5061017f61017a366004613478565b6106c4565b60405161018c9190613edc565b60405180910390f35b3480156101a157600080fd5b506101b56101b0366004613582565b6106f7565b60405161018c9190613831565b3480156101ce57600080fd5b5061017f6101dd366004612fc5565b6107de565b3480156101ee57600080fd5b506101586101fd366004613270565b610806565b34801561020e57600080fd5b5061022261021d3660046134a3565b610911565b60405161018c91906137ed565b34801561023b57600080fd5b5061017f61024a366004612fc5565b610a5d565b34801561025b57600080fd5b5061026f61026a366004613681565b610aba565b60405161018c9190613730565b61015861028a36600461332b565b6103f1565b34801561029b57600080fd5b5061017f610b16565b3480156102b057600080fd5b506101586102bf3660046133ce565b610b1c565b3480156102d057600080fd5b506101586102df3660046131b3565b610bb5565b3480156102f057600080fd5b506103046102ff366004613062565b610d29565b60405161018c91906138b9565b34801561031d57600080fd5b5061015861032c36600461333f565b610df3565b34801561033d57600080fd5b5061015861034c36600461310c565b610ed2565b34801561035d57600080fd5b506101b561036c36600461302a565b610eeb565b34801561037d57600080fd5b5061030461038c36600461314c565b610f26565b34801561039d57600080fd5b506101586103ac3660046133b7565b610fa2565b3480156103bd57600080fd5b506101586103cc3660046132be565b6110a6565b3480156103dd57600080fd5b506101b56103ec3660046133fb565b6111d6565b73ffffffffffffffffffffffffffffffffffffffff8216610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613943565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff841660011461066657341561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139fd565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906104f590339030908790600401613751565b602060405180830381600087803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105479190613566565b506105506119b7565b610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613a5a565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260409020548061065c576003805460010190819055600081815260056020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b169081179091558352600490915290819020829055519092507ff977d54986414fc91816901629d1d788ad95448ab4198dcb9b6dc5ed2b930c1f9061064f9087908590613782565b60405180910390a1610660565b8091505b506106a3565b34821461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906138e6565b5060015b6106be838284604051806020016040528060008152506119eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061078a57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b806107d657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b3373ffffffffffffffffffffffffffffffffffffffff8616148061082f575061082f8533610eeb565b610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806141be602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166108f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061412f6030913960400191505060405180910390fd5b6108fc85858585611aa0565b61090a858585855a86611df4565b5050505050565b6060815183511461096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061415f602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561098757600080fd5b506040519080825280602002602001820160405280156109b1578160200160208202803683370190505b50905060005b8451811015610a55576000808683815181106109cf57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858381518110610a1f57fe5b6020026020010151815260200190815260200160002054828281518110610a4257fe5b60209081029190910101526001016109b7565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020526040902054806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613dc5565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613c51565b60035490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff8516610c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d0b565b6060610c0c612df6565b6060610cbf89857fa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a060001b8c8c8c604051602001610c4a9190613699565b604051602081830303815290604052805190602001208c604051602001610c719190613699565b604051602081830303815290604052805190602001208c610c93576000610c96565b60015b604051602001610cab9695949392919061383c565b604051602081830303815290604052612061565b9050610ccd89898989611aa0565b8415610d105780806020019051810190610ce7919061364c565b8094508193505050610d0189898989866020015188611df4565b610d0b8983612230565b610d1e565b610d1e898989895a86611df4565b505050505050505050565b6000333014610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b71565b60005b8451811015610dc757610d8c858281518110610d7f57fe5b6020026020010151610aba565b50610dbf3087878481518110610d9e57fe5b6020026020010151878581518110610db257fe5b60200260200101516124d9565b600101610d67565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610e40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613ab7565b6060610e4a612df6565b6060610e8289857fce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558828c8c8c8c610c93576000610c96565b9050610e90898989896126da565b8415610ec45780806020019051810190610eaa919061364c565b8094508193505050610d01898989898660200151886127dd565b610d1e898989895a866127dd565b6000610edd84610a5d565b90506106be338483856124d9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000333014610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139a0565b610f6a84610aba565b50610f77308686866124d9565b507ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3373ffffffffffffffffffffffffffffffffffffffff86161480610fcb5750610fcb8533610eeb565b611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614029602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613fc7602b913960400191505060405180910390fd5b611098858585856126da565b61090a858585855a866127dd565b606061110286837ff5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa5248289896110dc5760006110df565b60015b896110eb5760006110ee565b60015b604051602001610cab95949392919061387d565b73ffffffffffffffffffffffffffffffffffffffff8781166000818152600160209081526040808320948b16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168915151790555192935090917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190611196908890613831565b60405180910390a382156111ce576111ac612df6565b818060200190518101906111c09190613619565b90506111cc8782612230565b505b505050505050565b600080825111611231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806141ed6043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851661129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018061418b6033913960400191505060405180910390fd5b60006112a8836129ce565b60f81c905060058110611306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b60008160ff16600581111561131757fe5b905060008080808085600581111561132b57fe5b1415611382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806140c26036913960400191505060405180910390fd5b600185600581111561139057fe5b14156114d35787516061146113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b6113fb886000612a8b565b9250611408886020612a8b565b91508760408151811061141757fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611481573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d811691161497506119af9650505050505050565b60028560058111156114e157fe5b1415611631578751606114611541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b61154c886000612a8b565b9250611559886020612a8b565b91508760408151811061156857fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611481573d6000803e3d6000fd5b600385600581111561163f57fe5b14156117f757604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b838110156116cd5781810151838201526020016116b5565b50505050905090810190601f1680156116fa5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561172d578181015183820152602001611715565b50505050905090810190601f16801561175a5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561177957600080fd5b505afa15801561178d573d6000803e3d6000fd5b505050506040513d60208110156117a357600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b600485600581111561180557fe5b141561195e57604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b8381101561189557818101518382015260200161187d565b50505050905090810190601f1680156118c25780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b1580156118e057600080fd5b505afa1580156118f4573d6000803e3d6000fd5b505050506040513d602081101561190a57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b949350505050565b6000803d80156119ce57602081146119d7576119e3565b600191506119e3565b60206000803e60005191505b501515905090565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152902054611a249083612af3565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46106be60008585855a866127dd565b8051825114611afa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806140536035913960400191505060405180910390fd5b815160005b81811015611cec57611b8f838281518110611b1657fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611b6a57fe5b6020026020010151815260200190815260200160002054612b6e90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611bdb57fe5b6020026020010151815260200190815260200160002081905550611c7d838281518110611c0457fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611c5857fe5b6020026020010151815260200190815260200160002054612af390919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611cc957fe5b602090810291909101810151825281019190915260400160002055600101611aff565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611d99578181015183820152602001611d81565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611dd8578181015183820152602001611dc0565b5050505090500194505050505060405180910390a45050505050565b611e138573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611ecb578181015183820152602001611eb3565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611f0a578181015183820152602001611ef2565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611f46578181015183820152602001611f2e565b50505050905090810190601f168015611f735780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611f9857600080fd5b5087f1158015611fac573d6000803e3d6000fd5b50505050506040513d6020811015611fc357600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614230603f913960400191505060405180910390fd5b6060808380602001905181019061207891906135c2565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040812054919450919250906120b0836041612a8b565b90508181108015906120c457508160640181105b6120fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e22565b60006121368683878051906020012060405160200161211b939291906136cf565b60405160208183030381529060405280519060200120612c1c565b9050606086838760405160200161214f939291906136f6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825273ffffffffffffffffffffffffffffffffffffffff8c166000818152600260205292909220600187019081905590935090917fb861b7bdbe611a846ab271b8d2810391bc8b5a968f390c322438ecab66bccf59916121da91613edc565b60405180910390a26121ee898383886111d6565b612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b14565b50505050509392505050565b600061223f82606001516129ce565b60f81c90506002811061227e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e7f565b60008160ff16600281111561228f57fe5b835160408501519192506000918291829173ffffffffffffffffffffffffffffffffffffffff16156122c55786604001516122c7565b335b925060008560028111156122d757fe5b14156123d65786606001518060200190518101906122f59190612ffd565b909450915073ffffffffffffffffffffffffffffffffffffffff841630141561234657612324888484846126da565b6123418884845a85604051806020016040528060008152506127dd565b6123d1565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f242432a9061239e908b908790879087906004016137a8565b600060405180830381600087803b1580156123b857600080fd5b505af11580156123cc573d6000803e3d6000fd5b505050505b6124cf565b86606001518060200190518101906123ee9190612fe1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90612447908b9087908690600401613751565b602060405180830381600087803b15801561246157600080fd5b505af1158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190613566565b6124cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613cae565b5050505050505050565b6124e4848383612d4b565b600182146125ea57600082815260056020526040908190205490517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690819063a9059cbb906125539087908690600401613782565b602060405180830381600087803b15801561256d57600080fd5b505af1158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a59190613566565b506125ae6119b7565b6125e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b506106be565b73ffffffffffffffffffffffffffffffffffffffff8316612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613bf4565b60008373ffffffffffffffffffffffffffffffffffffffff168260405161265d9061372d565b60006040518083038185875af1925050503d806000811461269a576040519150601f19603f3d011682016040523d82523d6000602084013e61269f565b606091505b505090508061090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546127139082612b6e565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546127639082612af3565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6127fc8573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156128b557818101518382015260200161289d565b50505050905090810190601f1680156128e25780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561290557600080fd5b5087f1158015612919573d6000803e3d6000fd5b50505050506040513d602081101561293057600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061426f603a913960400191505060405180910390fd5b600080825111612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180613ff26037913960400191505060405180910390fd5b81600183510381518110612a3957fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b60008160200183511015612aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806142a9603c913960400191505060405180910390fd5b50016020015190565b600082820183811015612b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082821115612bdf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000813f8015801590612b6757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b604080518082018252600281527f1901000000000000000000000000000000000000000000000000000000000000602080830191825283517f035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d47498183015230818601528451808203860181526060820190955284519490910193909320825160009491928692608001918291908083835b60208310612ce957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612cac565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152902054612d849082612b6e565b73ffffffffffffffffffffffffffffffffffffffff841660008181526020818152604080832087845282528083209490945583518681529081018590528351919333927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4505050565b60405180608001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600082601f830112612e44578081fd5b8135612e57612e5282613f09565b613ee5565b818152915060208083019084810181840286018201871015612e7857600080fd5b60005b84811015612e9757813584529282019290820190600101612e7b565b505050505092915050565b600082601f830112612eb2578081fd5b8135612ec0612e5282613f27565b9150808252836020828501011115612ed757600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612f00578081fd5b8151612f0e612e5282613f27565b9150808252836020828501011115612f2557600080fd5b612f36816020840160208601613f67565b5092915050565b600060808284031215612f4e578081fd5b6040516080810167ffffffffffffffff8282108183111715612f6c57fe5b81604052829350845183526020850151602084015260408501519150612f9182613f93565b8160408401526060850151915080821115612fab57600080fd5b50612fb885828601612ef0565b6060830152505092915050565b600060208284031215612fd6578081fd5b8135612b6781613f93565b600060208284031215612ff2578081fd5b8151612b6781613f93565b6000806040838503121561300f578081fd5b825161301a81613f93565b6020939093015192949293505050565b6000806040838503121561303c578182fd5b823561304781613f93565b9150602083013561305781613f93565b809150509250929050565b600080600080600060a08688031215613079578081fd5b853561308481613f93565b9450602086013561309481613f93565b9350604086013567ffffffffffffffff808211156130b0578283fd5b6130bc89838a01612e34565b945060608801359150808211156130d1578283fd5b6130dd89838a01612e34565b935060808801359150808211156130f2578283fd5b506130ff88828901612ea2565b9150509295509295909350565b600080600060608486031215613120578283fd5b833561312b81613f93565b9250602084013561313b81613f93565b929592945050506040919091013590565b600080600080600060a08688031215613163578081fd5b853561316e81613f93565b9450602086013561317e81613f93565b93506040860135925060608601359150608086013567ffffffffffffffff8111156131a7578182fd5b6130ff88828901612ea2565b60008060008060008060c087890312156131cb578384fd5b86356131d681613f93565b955060208701356131e681613f93565b9450604087013567ffffffffffffffff80821115613202578586fd5b61320e8a838b01612e34565b95506060890135915080821115613223578283fd5b61322f8a838b01612e34565b94506080890135915061324182613fb8565b90925060a08801359080821115613256578283fd5b5061326389828a01612ea2565b9150509295509295509295565b600080600080600060a08688031215613287578283fd5b853561329281613f93565b945060208601356132a281613f93565b9350604086013567ffffffffffffffff808211156130b0578485fd5b600080600080600060a086880312156132d5578283fd5b85356132e081613f93565b945060208601356132f081613f93565b9350604086013561330081613fb8565b9250606086013561331081613fb8565b9150608086013567ffffffffffffffff8111156131a7578182fd5b600080600060608486031215613120578081fd5b60008060008060008060c08789031215613357578384fd5b863561336281613f93565b9550602087013561337281613f93565b94506040870135935060608701359250608087013561339081613fb8565b915060a087013567ffffffffffffffff8111156133ab578182fd5b61326389828a01612ea2565b600080600080600060a08688031215613163578283fd5b600080604083850312156133e0578182fd5b82356133eb81613f93565b9150602083013561305781613fb8565b60008060008060808587031215613410578182fd5b843561341b81613f93565b935060208501359250604085013567ffffffffffffffff8082111561343e578384fd5b61344a88838901612ea2565b9350606087013591508082111561345f578283fd5b5061346c87828801612ea2565b91505092959194509250565b6000806040838503121561348a578182fd5b823561349581613f93565b946020939093013593505050565b600080604083850312156134b5578182fd5b823567ffffffffffffffff808211156134cc578384fd5b818501915085601f8301126134df578384fd5b81356134ed612e5282613f09565b80828252602080830192508086018a82838702890101111561350d578889fd5b8896505b8487101561353857803561352481613f93565b845260019690960195928101928101613511565b50909650870135935050508082111561354f578283fd5b5061355c85828601612e34565b9150509250929050565b600060208284031215613577578081fd5b8151612b6781613fb8565b600060208284031215613593578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612b67578182fd5b600080604083850312156135d4578182fd5b825167ffffffffffffffff808211156135eb578384fd5b6135f786838701612ef0565b9350602085015191508082111561360c578283fd5b5061355c85828601612ef0565b60006020828403121561362a578081fd5b815167ffffffffffffffff811115613640578182fd5b6119af84828501612f3d565b6000806040838503121561365e578182fd5b825167ffffffffffffffff80821115613675578384fd5b6135f786838701612f3d565b600060208284031215613692578081fd5b5035919050565b815160009082906020808601845b838110156136c3578151855293820193908201906001016136a7565b50929695505050505050565b600084516136e1818460208901613f67565b91909101928352506020820152604001919050565b60008451613708818460208901613f67565b82018481528351613720816020808501908801613f67565b0160200195945050505050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6020808252825182820181905260009190848201906040850190845b8181101561382557835183529284019291840191600101613809565b50909695505050505050565b901515815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252602d908201527f4d657461455243323057726170706572236465706f7369743a20494e434f525260408201527f4543545f4d53475f56414c554500000000000000000000000000000000000000606082015260800190565b6020808252602b908201527f4d657461455243323057726170706572236465706f7369743a20494e56414c4960408201527f445f524543495049454e54000000000000000000000000000000000000000000606082015260800190565b6020808252603c908201527f4d657461455243323057726170706572236f6e4552433131353552656365697660408201527f65643a20494e56414c49445f455243313135355f524543454956454400000000606082015260800190565b6020808252602c908201527f4d657461455243323057726170706572236465706f7369743a204e4f4e5f4e5560408201527f4c4c5f4d53475f56414c55450000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d657461455243323057726170706572236465706f7369743a205452414e534660408201527f45525f4641494c45440000000000000000000000000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461236d657461536166655472616e7366657246726f6d60408201527f3a20494e56414c49445f524543495049454e5400000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f5349474e415455524500000000000000000000000000606082015260800190565b60208082526041908201527f4d657461455243323057726170706572236f6e4552433131353542617463685260408201527f656365697665643a20494e56414c49445f455243313135355f5245434549564560608201527f4400000000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602c908201527f4d6574614552433230577261707065722377697468647261773a20494e56414c60408201527f49445f524543495049454e540000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4d657461455243323057726170706572236765744964416464726573733a205560408201527f4e524547495354455245445f544f4b454e000000000000000000000000000000606082015260800190565b60208082526032908201527f455243313135354d657461235f7472616e736665724761734665653a2045524360408201527f32305f5452414e534645525f4641494c45440000000000000000000000000000606082015260800190565b60208082526038908201527f455243313135354d657461236d6574615361666542617463685472616e73666560408201527f7246726f6d3a20494e56414c49445f524543495049454e540000000000000000606082015260800190565b6020808252602a908201527f4d6574614552433230577261707065722377697468647261773a205452414e5360408201527f4645525f4641494c454400000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4d65746145524332305772617070657223676574546f6b656e49443a20554e5260408201527f4547495354455245445f544f4b454e0000000000000000000000000000000000606082015260800190565b6020808252602f908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f4e4f4e43450000000000000000000000000000000000606082015260800190565b6020808252602e908201527f455243313135354d657461235f7472616e736665724761734665653a20554e5360408201527f5550504f525445445f544f4b454e000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715613f0157fe5b604052919050565b600067ffffffffffffffff821115613f1d57fe5b5060209081020190565b600067ffffffffffffffff821115613f3b57fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015613f82578181015183820152602001613f6a565b838111156106be5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114613fb557600080fd5b50565b8015158114613fb557600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245444552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f524551554952454445524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e455245524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f524551554952454445524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d4553534147454c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a264697066735822122079dca3ccf3c87ce8c5b2b0cdf20a6605d7cdada9245e5c8b2191910f42236c6d64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x147 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xF242432A GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x391 JUMPI DUP1 PUSH4 0xF5D4C820 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0xFA4E12D7 EQ PUSH2 0x3D1 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x371 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xBC197C81 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0xCE0B514B EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x331 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0xA3D4926E EQ PUSH2 0x2C4 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x7358E9A5 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x7358E9A5 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0x8340F549 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x9040A949 EQ PUSH2 0x28F JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x63F8071C EQ PUSH2 0x22F JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x1E2 JUMPI PUSH2 0x15A JUMP JUMPDEST CALLDATASIZE PUSH2 0x15A JUMPI PUSH2 0x158 PUSH1 0x1 CALLER CALLVALUE PUSH2 0x3F1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x17A CALLDATASIZE PUSH1 0x4 PUSH2 0x3478 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3EDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3582 JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3831 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC5 JUMP JUMPDEST PUSH2 0x7DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x1FD CALLDATASIZE PUSH1 0x4 PUSH2 0x3270 JUMP JUMPDEST PUSH2 0x806 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x222 PUSH2 0x21D CALLDATASIZE PUSH1 0x4 PUSH2 0x34A3 JUMP JUMPDEST PUSH2 0x911 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x37ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC5 JUMP JUMPDEST PUSH2 0xA5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26F PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x3681 JUMP JUMPDEST PUSH2 0xABA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3730 JUMP JUMPDEST PUSH2 0x158 PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x332B JUMP JUMPDEST PUSH2 0x3F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0xB16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x33CE JUMP JUMPDEST PUSH2 0xB1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x31B3 JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x2FF CALLDATASIZE PUSH1 0x4 PUSH2 0x3062 JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x38B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x333F JUMP JUMPDEST PUSH2 0xDF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x34C CALLDATASIZE PUSH1 0x4 PUSH2 0x310C JUMP JUMPDEST PUSH2 0xED2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x302A JUMP JUMPDEST PUSH2 0xEEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x38C CALLDATASIZE PUSH1 0x4 PUSH2 0x314C JUMP JUMPDEST PUSH2 0xF26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x3AC CALLDATASIZE PUSH1 0x4 PUSH2 0x33B7 JUMP JUMPDEST PUSH2 0xFA2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x32BE JUMP JUMPDEST PUSH2 0x10A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x3EC CALLDATASIZE PUSH1 0x4 PUSH2 0x33FB JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3943 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x1 EQ PUSH2 0x666 JUMPI CALLVALUE ISZERO PUSH2 0x49F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x39FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x4F5 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3751 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x523 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x547 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST POP PUSH2 0x550 PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0x586 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3A5A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x65C JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MSTORE PUSH1 0x4 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE MLOAD SWAP1 SWAP3 POP PUSH32 0xF977D54986414FC91816901629D1D788AD95448AB4198DCB9B6DC5ED2B930C1F SWAP1 PUSH2 0x64F SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH2 0x3782 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x660 JUMP JUMPDEST DUP1 SWAP2 POP JUMPDEST POP PUSH2 0x6A3 JUMP JUMPDEST CALLVALUE DUP3 EQ PUSH2 0x69F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x38E6 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST PUSH2 0x6BE DUP4 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x19EB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x78A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x7D6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x82F JUMPI POP PUSH2 0x82F DUP6 CALLER PUSH2 0xEEB JUMP JUMPDEST PUSH2 0x884 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x41BE PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x8F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x412F PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8FC DUP6 DUP6 DUP6 DUP6 PUSH2 0x1AA0 JUMP JUMPDEST PUSH2 0x90A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1DF4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x415F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x987 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9B1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9CF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xA1F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA42 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x9B7 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3DC5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3C51 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0xC02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D0B JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC0C PUSH2 0x2DF6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCBF DUP10 DUP6 PUSH32 0xA3D4926E8CF8FE8E020CD29F514C256BC2EEC62AA2337E415F1A33A4828AF5A0 PUSH1 0x0 SHL DUP13 DUP13 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC4A SWAP2 SWAP1 PUSH2 0x3699 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC71 SWAP2 SWAP1 PUSH2 0x3699 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH2 0xC93 JUMPI PUSH1 0x0 PUSH2 0xC96 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCAB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x2061 JUMP JUMPDEST SWAP1 POP PUSH2 0xCCD DUP10 DUP10 DUP10 DUP10 PUSH2 0x1AA0 JUMP JUMPDEST DUP5 ISZERO PUSH2 0xD10 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xCE7 SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0xD01 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x1DF4 JUMP JUMPDEST PUSH2 0xD0B DUP10 DUP4 PUSH2 0x2230 JUMP JUMPDEST PUSH2 0xD1E JUMP JUMPDEST PUSH2 0xD1E DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x1DF4 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0xD64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3B71 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xDC7 JUMPI PUSH2 0xD8C DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD7F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xABA JUMP JUMPDEST POP PUSH2 0xDBF ADDRESS DUP8 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD9E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xDB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x24D9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD67 JUMP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0xE40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3AB7 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE4A PUSH2 0x2DF6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE82 DUP10 DUP6 PUSH32 0xCE0B514B3931BDBE4D5D44E4F035AFE7113767B7DB71949271F6A62D9C60F558 DUP3 DUP13 DUP13 DUP13 DUP13 PUSH2 0xC93 JUMPI PUSH1 0x0 PUSH2 0xC96 JUMP JUMPDEST SWAP1 POP PUSH2 0xE90 DUP10 DUP10 DUP10 DUP10 PUSH2 0x26DA JUMP JUMPDEST DUP5 ISZERO PUSH2 0xEC4 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xEAA SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0xD01 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x27DD JUMP JUMPDEST PUSH2 0xD1E DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEDD DUP5 PUSH2 0xA5D JUMP JUMPDEST SWAP1 POP PUSH2 0x6BE CALLER DUP5 DUP4 DUP6 PUSH2 0x24D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0xF61 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x39A0 JUMP JUMPDEST PUSH2 0xF6A DUP5 PUSH2 0xABA JUMP JUMPDEST POP PUSH2 0xF77 ADDRESS DUP7 DUP7 DUP7 PUSH2 0x24D9 JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0xFCB JUMPI POP PUSH2 0xFCB DUP6 CALLER PUSH2 0xEEB JUMP JUMPDEST PUSH2 0x1020 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4029 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FC7 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1098 DUP6 DUP6 DUP6 DUP6 PUSH2 0x26DA JUMP JUMPDEST PUSH2 0x90A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1102 DUP7 DUP4 PUSH32 0xF5D4C820494C8595DE274C7FF619BEAD38AAC4FBC3D143B5BF956AA4B84FA524 DUP3 DUP10 DUP10 PUSH2 0x10DC JUMPI PUSH1 0x0 PUSH2 0x10DF JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP10 PUSH2 0x10EB JUMPI PUSH1 0x0 PUSH2 0x10EE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCAB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x387D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP12 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP10 ISZERO ISZERO OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP1 PUSH2 0x1196 SWAP1 DUP9 SWAP1 PUSH2 0x3831 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP3 ISZERO PUSH2 0x11CE JUMPI PUSH2 0x11AC PUSH2 0x2DF6 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x11C0 SWAP2 SWAP1 PUSH2 0x3619 JUMP JUMPDEST SWAP1 POP PUSH2 0x11CC DUP8 DUP3 PUSH2 0x2230 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x1231 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x41ED PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x129D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x418B PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A8 DUP4 PUSH2 0x29CE JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x5 DUP2 LT PUSH2 0x1306 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4088 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1317 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x132B JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1382 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40C2 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1390 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x14D3 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x13F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40F8 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x13FB DUP9 PUSH1 0x0 PUSH2 0x2A8B JUMP JUMPDEST SWAP3 POP PUSH2 0x1408 DUP9 PUSH1 0x20 PUSH2 0x2A8B JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x1417 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP4 POP PUSH1 0x1 DUP11 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1481 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 DUP2 AND SWAP2 AND EQ SWAP8 POP PUSH2 0x19AF SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x14E1 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1631 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x1541 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40F8 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x154C DUP9 PUSH1 0x0 PUSH2 0x2A8B JUMP JUMPDEST SWAP3 POP PUSH2 0x1559 DUP9 PUSH1 0x20 PUSH2 0x2A8B JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x1568 JUMPI INVALID JUMPDEST ADD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 DUP6 ADD MSTORE PUSH1 0x3C DUP1 DUP3 ADD DUP16 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x5C DUP3 ADD DUP1 DUP5 MSTORE DUP2 MLOAD SWAP2 DUP7 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP1 SWAP2 MSTORE PUSH1 0x7C DUP3 ADD DUP1 DUP5 MSTORE MSTORE PUSH1 0xF8 SWAP3 SWAP1 SWAP3 SHR PUSH1 0x9C DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xBC DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0xDC DUP4 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP1 SWAP7 POP PUSH1 0x1 SWAP3 PUSH1 0xFC DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1481 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x163F JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x17F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 DUP3 MSTORE DUP11 MLOAD PUSH1 0x44 DUP3 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP3 PUSH4 0x20C13B0B SWAP3 DUP14 SWAP3 DUP14 SWAP3 SWAP2 DUP3 SWAP2 PUSH1 0x24 DUP3 ADD SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16B5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x16FA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x172D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1715 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x175A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x178D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x19AF SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1805 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x195E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP13 DUP2 MSTORE PUSH1 0x24 DUP3 ADD SWAP3 DUP4 MSTORE DUP11 MLOAD PUSH1 0x44 DUP4 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP4 PUSH4 0x1626BA7E SWAP4 DUP16 SWAP4 DUP15 SWAP4 SWAP1 SWAP3 SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1895 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x187D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18C2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x190A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x19AF SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4088 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 RETURNDATASIZE DUP1 ISZERO PUSH2 0x19CE JUMPI PUSH1 0x20 DUP2 EQ PUSH2 0x19D7 JUMPI PUSH2 0x19E3 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x19E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x0 DUP1 RETURNDATACOPY PUSH1 0x0 MLOAD SWAP2 POP JUMPDEST POP ISZERO ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1A24 SWAP1 DUP4 PUSH2 0x2AF3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP8 DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x6BE PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x1AFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4053 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1CEC JUMPI PUSH2 0x1B8F DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B16 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1B6A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x2B6E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1BDB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x1C7D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C04 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1C58 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x2AF3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CC9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1AFF JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D99 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D81 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DD8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DC0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1E13 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2BE5 JUMP JUMPDEST ISZERO PUSH2 0x11CE JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1ECB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EB3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F0A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EF2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F46 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1F2E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F73 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1FAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4230 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP1 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2078 SWAP2 SWAP1 PUSH2 0x35C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x20B0 DUP4 PUSH1 0x41 PUSH2 0x2A8B JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x20C4 JUMPI POP DUP2 PUSH1 0x64 ADD DUP2 LT JUMPDEST PUSH2 0x20FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3E22 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2136 DUP7 DUP4 DUP8 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x211B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2C1C JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP7 DUP4 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x214F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x1 DUP8 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 SWAP4 POP SWAP1 SWAP2 PUSH32 0xB861B7BDBE611A846AB271B8D2810391BC8B5A968F390C322438ECAB66BCCF59 SWAP2 PUSH2 0x21DA SWAP2 PUSH2 0x3EDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x21EE DUP10 DUP4 DUP4 DUP9 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x2224 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3B14 JUMP JUMPDEST POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x223F DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x29CE JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x2 DUP2 LT PUSH2 0x227E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3E7F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x228F JUMPI INVALID JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP6 ADD MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x22C5 JUMPI DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x22C7 JUMP JUMPDEST CALLER JUMPDEST SWAP3 POP PUSH1 0x0 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22D7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x23D6 JUMPI DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x22F5 SWAP2 SWAP1 PUSH2 0x2FFD JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ ISZERO PUSH2 0x2346 JUMPI PUSH2 0x2324 DUP9 DUP5 DUP5 DUP5 PUSH2 0x26DA JUMP JUMPDEST PUSH2 0x2341 DUP9 DUP5 DUP5 GAS DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x27DD JUMP JUMPDEST PUSH2 0x23D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0xF242432A SWAP1 PUSH2 0x239E SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x37A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x24CF JUMP JUMPDEST DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x23EE SWAP2 SWAP1 PUSH2 0x2FE1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x2447 SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3751 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2475 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2499 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST PUSH2 0x24CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3CAE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x24E4 DUP5 DUP4 DUP4 PUSH2 0x2D4B JUMP JUMPDEST PUSH1 0x1 DUP3 EQ PUSH2 0x25EA JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP2 SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x2553 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3782 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x256D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2581 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25A5 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST POP PUSH2 0x25AE PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0x25E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D68 JUMP JUMPDEST POP PUSH2 0x6BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2637 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3BF4 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x265D SWAP1 PUSH2 0x372D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x269A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x269F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x90A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D68 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2713 SWAP1 DUP3 PUSH2 0x2B6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x2763 SWAP1 DUP3 PUSH2 0x2AF3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x27FC DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2BE5 JUMP JUMPDEST ISZERO PUSH2 0x11CE JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28B5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x289D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x28E2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x2919 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2930 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x426F PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x2A29 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF2 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x2A39 JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO PUSH2 0x2AEA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x42A9 PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2B67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x2BDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2B67 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD PUSH32 0x35AFF83D86937D35B32E04F0DDC6FF469290EEF2F1B692D8A815C89404D4749 DUP2 DUP4 ADD MSTORE ADDRESS DUP2 DUP7 ADD MSTORE DUP5 MLOAD DUP1 DUP3 SUB DUP7 ADD DUP2 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP6 MSTORE DUP5 MLOAD SWAP5 SWAP1 SWAP2 ADD SWAP4 SWAP1 SWAP4 KECCAK256 DUP3 MLOAD PUSH1 0x0 SWAP5 SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0x80 ADD SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2CE9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2CAC JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE SWAP3 ADD SWAP5 DUP6 MSTORE POP DUP4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP5 SUB DUP4 ADD DUP2 MSTORE SWAP3 DUP2 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2D84 SWAP1 DUP3 PUSH2 0x2B6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD SWAP2 SWAP4 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E44 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2E57 PUSH2 0x2E52 DUP3 PUSH2 0x3F09 JUMP JUMPDEST PUSH2 0x3EE5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x2E78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2E97 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E7B JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2EB2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2EC0 PUSH2 0x2E52 DUP3 PUSH2 0x3F27 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2ED7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2F00 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F0E PUSH2 0x2E52 DUP3 PUSH2 0x3F27 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2F25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F36 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F67 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F4E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x2F6C JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 SWAP4 POP DUP5 MLOAD DUP4 MSTORE PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH2 0x2F91 DUP3 PUSH2 0x3F93 JUMP JUMPDEST DUP2 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2FAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB8 DUP6 DUP3 DUP7 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FD6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B67 DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FF2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B67 DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x300F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x301A DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x303C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3047 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3057 DUP2 PUSH2 0x3F93 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3079 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3084 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3094 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x30B0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x30BC DUP10 DUP4 DUP11 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x30D1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x30DD DUP10 DUP4 DUP11 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x30F2 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x30FF DUP9 DUP3 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3120 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x312B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x313B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3163 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x316E DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x317E DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x30FF DUP9 DUP3 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x31CB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x31D6 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x31E6 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3202 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x320E DUP11 DUP4 DUP12 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3223 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x322F DUP11 DUP4 DUP12 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3241 DUP3 PUSH2 0x3FB8 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x3256 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3263 DUP10 DUP3 DUP11 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3287 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3292 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x32A2 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x30B0 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x32D5 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x32E0 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x32F0 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3300 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x3310 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3120 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3357 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3362 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3372 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3390 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33AB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3263 DUP10 DUP3 DUP11 ADD PUSH2 0x2EA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3163 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x33E0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x33EB DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3057 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3410 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x341B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x343E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x344A DUP9 DUP4 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x345F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x346C DUP8 DUP3 DUP9 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x348A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3495 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x34B5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x34CC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x34DF JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34ED PUSH2 0x2E52 DUP3 PUSH2 0x3F09 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x350D JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x3538 JUMPI DUP1 CALLDATALOAD PUSH2 0x3524 DUP2 PUSH2 0x3F93 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x3511 JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x354F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x355C DUP6 DUP3 DUP7 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3577 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B67 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3593 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x2B67 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x35D4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x35EB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x35F7 DUP7 DUP4 DUP8 ADD PUSH2 0x2EF0 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x360C JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x355C DUP6 DUP3 DUP7 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x362A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3640 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19AF DUP5 DUP3 DUP6 ADD PUSH2 0x2F3D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x365E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3675 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x35F7 DUP7 DUP4 DUP8 ADD PUSH2 0x2F3D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3692 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 DUP3 SWAP1 PUSH1 0x20 DUP1 DUP7 ADD DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x36C3 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x36A7 JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x36E1 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3F67 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 DUP4 MSTORE POP PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x3708 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3F67 JUMP JUMPDEST DUP3 ADD DUP5 DUP2 MSTORE DUP4 MLOAD PUSH2 0x3720 DUP2 PUSH1 0x20 DUP1 DUP6 ADD SWAP1 DUP9 ADD PUSH2 0x3F67 JUMP JUMPDEST ADD PUSH1 0x20 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3825 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3809 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A20494E434F5252 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4543545F4D53475F56414C554500000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A20494E56414C49 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x445F524543495049454E54000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236F6E45524331313535526563656976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x65643A20494E56414C49445F455243313135355F524543454956454400000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A204E4F4E5F4E55 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4C4C5F4D53475F56414C55450000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A205452414E5346 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x45525F4641494C45440000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D657461536166655472616E7366657246726F6D PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F524543495049454E5400000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F5349474E415455524500000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x41 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236F6E45524331313535426174636852 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656365697665643A20494E56414C49445F455243313135355F52454345495645 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6574614552433230577261707065722377697468647261773A20494E56414C PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x49445F524543495049454E540000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236765744964416464726573733A2055 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4E524547495354455245445F544F4B454E000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20455243 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x32305F5452414E534645525F4641494C45440000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D6574615361666542617463685472616E736665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7246726F6D3A20494E56414C49445F524543495049454E540000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6574614552433230577261707065722377697468647261773A205452414E53 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4645525F4641494C454400000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2F SWAP1 DUP3 ADD MSTORE PUSH32 0x4D65746145524332305772617070657223676574546F6B656E49443A20554E52 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4547495354455245445F544F4B454E0000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2F SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F4E4F4E43450000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20554E53 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x5550504F525445445F544F4B454E000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3F01 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3F1D JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3F3B JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F82 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F6A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x6BE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3FB5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD 0x4C PUSH10 0x62427974657323706F70 0x4C PUSH2 0x7374 TIMESTAMP PUSH26 0x74653A20475245415445525F5448414E5F5A45524F5F4C454E47 SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 SSTORE 0x4E MSTORE8 SSTORE POP POP 0x4F MSTORE SLOAD GASLIMIT DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4C 0x4C GASLIMIT SELFBALANCE COINBASE 0x4C 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F CODECOPY CALLDATACOPY 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E GASLIMIT MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F SLOAD 0x48 COINBASE 0x4E 0x5F ADDRESS 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT 0x4C PUSH10 0x62427974657323726561 PUSH5 0x4279746573 CALLER ORIGIN GASPRICE KECCAK256 SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F 0x4F MSTORE 0x5F GASLIMIT MLOAD SSTORE COINBASE 0x4C 0x5F SLOAD 0x4F 0x5F CALLER ORIGIN 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH26 0xDCA3CCF3C87CE8C5B2B0CDF20A6605D7CDADA9245E5C8B219191 0xF TIMESTAMP 0x23 PUSH13 0x6D64736F6C6343000704003300 ",
              "sourceMap": "164:50:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2122:43:12;1062:3;2143:10;2155:9;2122:7;:43::i;:::-;164:50:7;;;;;7127:132:21;;;;;;;;;;-1:-1:-1;7127:132:21;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10131:266:12;;;;;;;;;;-1:-1:-1;10131:266:12;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11349:110:22:-;;;;;;;;;;-1:-1:-1;11349:110:22;;;;;:::i;:::-;;:::i;2312:522:21:-;;;;;;;;;;-1:-1:-1;2312:522:21;;;;;:::i;:::-;;:::i;7539:495::-;;;;;;;;;;-1:-1:-1;7539:495:21;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7663:212:12:-;;;;;;;;;;-1:-1:-1;7663:212:12;;;;;:::i;:::-;;:::i;8092:213::-;;;;;;;;;;-1:-1:-1;8092:213:12;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2584:1304::-;;;;;;:::i;:::-;;:::i;8380:79::-;;;;;;;;;;;;;:::i;6135:230:21:-;;;;;;;;;;-1:-1:-1;6135:230:21;;;;;:::i;:::-;;:::i;4970:1709:22:-;;;;;;;;;;-1:-1:-1;4970:1709:22;;;;;:::i;:::-;;:::i;6810:632:12:-;;;;;;;;;;-1:-1:-1;6810:632:12;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2630:1583:22:-;;;;;;;;;;-1:-1:-1;2630:1583:22;;;;;:::i;:::-;;:::i;4313:174:12:-;;;;;;;;;;-1:-1:-1;4313:174:12;;;;;:::i;:::-;;:::i;6627:160:21:-;;;;;;;;;;-1:-1:-1;6627:160:21;;;;;:::i;:::-;;:::i;5895:489:12:-;;;;;;;;;;-1:-1:-1;5895:489:12;;;;;:::i;:::-;;:::i;1373:556:21:-;;;;;;;;;;-1:-1:-1;1373:556:21;;;;;:::i;:::-;;:::i;7553:950:22:-;;;;;;;;;;-1:-1:-1;7553:950:22;;;;;:::i;:::-;;:::i;2047:3179:32:-;;;;;;;;;;-1:-1:-1;2047:3179:32;;;;;:::i;:::-;;:::i;2584:1304:12:-;2688:26;;;2680:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;2814:10;2871:21;;;1062:3;2871:21;2867:953;;2945:9;:14;2937:71;;;;;;;;;;;;:::i;:::-;3016:62;;;;;:27;;;;;;:62;;3044:10;;3064:4;;3071:6;;3016:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3094:14;:12;:14::i;:::-;3086:68;;;;;;;;;;;;:::i;:::-;3214:19;;;3194:17;3214:19;;;:11;:19;;;;;;3287:14;3283:413;;3313:7;:12;;3324:1;3313:12;;;;;-1:-1:-1;3464:15:12;;;:11;:15;;;;;;;;:24;;;;;;;;;;;;;3525:19;;:11;:19;;;;;;;:24;;;3618:29;3313:12;;-1:-1:-1;3618:29:12;;;;3464:24;;3313:12;;3618:29;:::i;:::-;;;;;;;;3283:413;;;3678:9;3673:14;;3283:413;2867:953;;;;3735:9;3725:6;:19;3717:77;;;;;;;;;;;;:::i;:::-;-1:-1:-1;953:3:12;2867:953;3850:33;3856:10;3868:2;3872:6;3850:33;;;;;;;;;;;;:5;:33::i;:::-;2584:1304;;;;:::o;7127:132:21:-;7233:16;;;;;7209:7;7233:16;;;;;;;;;;;:21;;;;;;;;;7127:132::o;10131:266:12:-;10208:4;10228:40;;;10243:25;10228:40;;:91;;-1:-1:-1;10278:41:12;;;10293:26;10278:41;10228:91;:156;;;-1:-1:-1;10330:54:12;;;10345:39;10330:54;10228:156;10220:164;;10131:266;;;;:::o;11349:110:22:-;11439:15;;11409:13;11439:15;;;:6;:15;;;;;;;11349:110::o;2312:522:21:-;2498:10;:19;;;;;2497:60;;;2522:35;2539:5;2546:10;2522:16;:35::i;:::-;2489:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2623:17;;;2615:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2700:50;2723:5;2730:3;2735:4;2741:8;2700:22;:50::i;:::-;2756:73;2784:5;2791:3;2796:4;2802:8;2812:9;2823:5;2756:27;:73::i;:::-;2312:522;;;;;:::o;7539:495::-;7646:16;7698:4;:11;7680:7;:14;:29;7672:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7782:30;7829:7;:14;7815:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7815:29:21;;7782:62;;7900:9;7895:108;7919:7;:14;7915:1;:18;7895:108;;;7967:8;:20;7976:7;7984:1;7976:10;;;;;;;;;;;;;;7967:20;;;;;;;;;;;;;;;:29;7988:4;7993:1;7988:7;;;;;;;;;;;;;;7967:29;;;;;;;;;;;;7948:13;7962:1;7948:16;;;;;;;;;;;;;;;;;:48;7935:3;;7895:108;;;-1:-1:-1;8016:13:21;7539:495;-1:-1:-1;;;7539:495:21:o;7663:212:12:-;7753:19;;;7720:15;7753:19;;;:11;:19;;;;;;7786:12;7778:72;;;;;;;;;;;;:::i;8092:213::-;8148:13;8177:16;;;:11;:16;;;;;;;;8207:21;8199:83;;;;;;;;;;;;:::i;8380:79::-;8447:7;;8380:79;:::o;6135:230:21:-;6267:10;6257:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;6312:48;;;;;;;6257:32;;6267:10;6312:48;;;;;;;;;;;6135:230;;:::o;4970:1709:22:-;5171:17;;;5163:86;;;;;;;;;;;;:::i;:::-;5276:25;5307:28;;:::i;:::-;5394:23;5420:342;5448:5;5461;9017:66;5494:22;;5526:5;5563:3;5627:4;5610:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;5600:33;;;;;;5670:8;5653:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;5643:37;;;;;;5690:9;:35;;5723:1;5690:35;;;5710:1;5690:35;5474:282;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5420:20;:342::i;:::-;5394:368;;5792:50;5815:5;5822:3;5827:4;5833:8;5792:22;:50::i;:::-;5888:9;5884:791;;;5947:10;5936:43;;;;;;;;;;;;:::i;:::-;5907:72;;;;;;;;6393:98;6421:5;6428:3;6433:4;6439:8;6449:10;:27;;;6478:12;6393:27;:98::i;:::-;6534:34;6550:5;6557:10;6534:15;:34::i;:::-;5884:791;;;6590:78;6618:5;6625:3;6630:4;6636:8;6646:9;6657:10;6590:27;:78::i;:::-;4970:1709;;;;;;;;;:::o;6810:632:12:-;6956:6;7030:10;7052:4;7030:27;7022:105;;;;;;;;;;;;:::i;:::-;7167:9;7161:235;7186:4;:11;7182:1;:15;7161:235;;;7248:21;7261:4;7266:1;7261:7;;;;;;;;;;;;;;7248:12;:21::i;:::-;;7337:52;7355:4;7362:5;7369:4;7374:1;7369:7;;;;;;;;;;;;;;7378;7386:1;7378:10;;;;;;;;;;;;;;7337:9;:52::i;:::-;7199:3;;7161:235;;;-1:-1:-1;7409:28:12;;6810:632;-1:-1:-1;;;;;;6810:632:12:o;2630:1583:22:-;2806:17;;;2798:81;;;;;;;;;;;;:::i;:::-;2906:25;2937:28;;:::i;:::-;3024:23;3050:276;3078:5;3091;8788:66;3078:5;3187:3;3224;3237:7;3254:9;:35;;3287:1;3254:35;;3050:276;3024:302;;3355:43;3373:5;3380:3;3385;3390:7;3355:17;:43::i;:::-;3443:9;3439:770;;;3502:10;3491:43;;;;;;;;;;;;:::i;:::-;3462:72;;;;;;;;3948:91;3971:5;3978:3;3983;3988:7;3997:10;:27;;;4026:12;3948:22;:91::i;3439:770::-;4131:71;4154:5;4161:3;4166;4171:7;4180:9;4191:10;4131:22;:71::i;4313:174:12:-;4397:15;4415:18;4426:6;4415:10;:18::i;:::-;4397:36;;4439:43;4449:10;4461:3;4466:7;4475:6;4439:9;:43::i;6627:160:21:-;6754:17;;;;6722:15;6754:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;6627:160::o;5895:489:12:-;6016:6;6090:10;6112:4;6090:27;6082:100;;;;;;;;;;;;:::i;:::-;6188:17;6201:3;6188:12;:17::i;:::-;;6299:44;6317:4;6324:5;6331:3;6336:6;6299:9;:44::i;:::-;-1:-1:-1;6357:22:12;5895:489;;;;;;;:::o;1373:556:21:-;1514:10;:19;;;;;1513:60;;;1538:35;1555:5;1562:10;1538:16;:35::i;:::-;1505:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:17;;;1626:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:43;1827:5;1834:3;1839;1844:7;1809:17;:43::i;:::-;1858:66;1881:5;1888:3;1893;1898:7;1907:9;1918:5;1858:22;:66::i;7553:950:22:-;7763:23;7789:380;7817:6;7831:5;9227:66;7817:6;7963:9;8030;:35;;8063:1;8030:35;;;8050:1;8030:35;8097:9;:35;;8130:1;8097:35;;;8117:1;8097:35;7844:319;;;;;;;;;;;;:::i;7789:380::-;8206:17;;;;;;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;:40;;;;;;;;;;8276:44;7763:406;;-1:-1:-1;8206:28:22;;8276:44;;;;8206:40;;8276:44;:::i;:::-;;;;;;;;8363:9;8359:140;;;8382:28;;:::i;:::-;8424:10;8413:36;;;;;;;;;;;;:::i;:::-;8382:67;;8457:35;8473:6;8481:10;8457:15;:35::i;:::-;8359:140;;7553:950;;;;;;:::o;2047:3179:32:-;2204:12;2255:1;2241:4;:11;:15;2226:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2361:30;;;2346:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2515:22;2546:18;:4;:16;:18::i;:::-;2540:25;;;-1:-1:-1;2649:29:32;2624:55;;2609:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:27;2834:16;2820:31;;;;;;;;;;2790:61;-1:-1:-1;2903:7:32;;;;;3272:13;:38;;;;;;;;;3268:1597;;;3320:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3268:1597;3450:20;3433:13;:37;;;;;;;;;3429:1436;;;3497:4;:11;3512:2;3497:17;3480:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3601:19;:4;3618:1;3601:16;:19::i;:::-;3597:23;-1:-1:-1;3632:20:32;:4;3649:2;3632:16;:20::i;:::-;3628:24;;3670:4;3675:2;3670:8;;;;;;;;;;;;;;;;3664:15;;3660:19;;3699:25;3709:5;3716:1;3719;3722;3699:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3699:25:32;;;;;3742:27;;;;;;;;-1:-1:-1;3777:14:32;;-1:-1:-1;;;;;;;3777:14:32;3429:1436;3894:21;3877:13;:38;;;;;;;;;3873:992;;;3942:4;:11;3957:2;3942:17;3925:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4046:19;:4;4063:1;4046:16;:19::i;:::-;4042:23;-1:-1:-1;4077:20:32;:4;4094:2;4077:16;:20::i;:::-;4073:24;;4115:4;4120:2;4115:8;;;;;;;;;;;;;;4173:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4163:70;;;;;;;;;-1:-1:-1;4144:130:32;;;;;;;;;;4115:8;;;;;4144:130;;;;;;;;;;;;;;;;;;;;4115:8;;-1:-1:-1;4144:130:32;;;;;;;4115:8;;-1:-1:-1;4144:130:32;;;;;;;;;;;;;;;;;;;;;;;;;3873:992;4444:25;4427:13;:42;;;;;;;;;4423:442;;;4511:60;;;;;;;;;;;;;;;;;;;;:47;;;;;;4559:5;;4566:4;;4511:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4511:60:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4511:60:32;4489:82;;:18;:82;;-1:-1:-1;4579:14:32;;-1:-1:-1;;;;;;4579:14:32;4423:442;4699:27;4682:13;:44;;;;;;;;;4678:187;;;4776:60;;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;;;4824:5;;4831:4;;4776:60;;;;;;;;;;;;;-1:-1:-1;4776:60:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4776:60:32;4746:90;;:26;:90;;-1:-1:-1;4844:14:32;;-1:-1:-1;;;;;;4844:14:32;4678:187;5153:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:3179;;;;;;;:::o;8905:745:12:-;8959:4;;9154:16;9225:47;;;;9335:4;9330:192;;;;9147:456;;9225:47;9261:1;9246:16;;9225:47;;9330:192;9423:4;9418:3;9413;9398:30;9508:3;9502:10;9487:25;;9147:456;-1:-1:-1;9629:16:12;;;-1:-1:-1;8905:745:12;:::o;716:401:24:-;855:13;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:31;;878:7;855:22;:31::i;:::-;834:13;;;:8;:13;;;;;;;;;;;:18;;;;;;;;:52;;;;916:59;;;;;;;;;;;;;834:13;;:8;;931:10;;916:59;;;;;;;;1039:73;1070:3;1076;1081;1086:7;1095:9;1106:5;1039:22;:73::i;4452:670:21:-;4606:8;:15;4591:4;:11;:30;4583:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4743:11;;4723:17;4792:243;4816:9;4812:1;:13;4792:243;;;4915:41;4944:8;4953:1;4944:11;;;;;;;;;;;;;;4915:8;:15;4924:5;4915:15;;;;;;;;;;;;;;;:24;4931:4;4936:1;4931:7;;;;;;;;;;;;;;4915:24;;;;;;;;;;;;:28;;:41;;;;:::i;:::-;4888:8;:15;4897:5;4888:15;;;;;;;;;;;;;;;:24;4904:4;4909:1;4904:7;;;;;;;;;;;;;;4888:24;;;;;;;;;;;:68;;;;4989:39;5016:8;5025:1;5016:11;;;;;;;;;;;;;;4989:8;:13;4998:3;4989:13;;;;;;;;;;;;;;;:22;5003:4;5008:1;5003:7;;;;;;;;;;;;;;4989:22;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;4964:8;:13;4973:3;4964:13;;;;;;;;;;;;;;;:22;4978:4;4983:1;4978:7;;;;;;;;;;;;;;;;;;;4964:22;;;;;;;;;;-1:-1:-1;4964:22:21;:64;4827:3;;4792:243;;;;5097:3;5064:53;;5090:5;5064:53;;5078:10;5064:53;;;5102:4;5108:8;5064:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:670;;;;;:::o;5235:503::-;5456:16;:3;:14;;;:16::i;:::-;5452:282;;;5482:13;5520:3;5498:49;;;5553:9;5564:10;5576:5;5583:4;5589:8;5599:5;5498:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5498:107:21;;-1:-1:-1;5621:38:21;;;5631:28;5621:38;5613:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9962:1243:22;10093:23;10126:16;10218:8;10207:36;;;;;;;;;;;;:::i;:::-;10327:15;;;10304:20;10327:15;;;:6;:15;;;;;;10187:56;;-1:-1:-1;10187:56:22;;-1:-1:-1;10327:15:22;10412:19;10187:56;10428:2;10412:15;:19::i;:::-;10404:28;-1:-1:-1;10528:21:22;;;;;;10527:57;;;10564:12;10579:3;10564:18;10555:5;:28;10527:57;10512:135;;;;;;;;;;;;:::i;:::-;10687:12;10702:89;10747:11;10760:5;10777:10;10767:21;;;;;;10730:59;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10720:70;;;;;;10702:17;:89::i;:::-;10687:104;;10846:21;10887:11;10900:5;10907:10;10870:48;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;10954:15;;;;;;;:6;10870:48;10954:15;;;;;10980:1;10972:9;;10954:27;;;;10870:48;;-1:-1:-1;10954:15:22;;10992:31;;;;;:::i;:::-;;;;;;;;11075:46;11092:7;11101:4;11107:8;11117:3;11075:16;:46::i;:::-;11067:110;;;;;;;;;;;;:::i;:::-;11183:17;;;;;9962:1243;;;;;:::o;11901:1695::-;12029:21;12059:29;:2;:15;;;:27;:29::i;:::-;12053:36;;;-1:-1:-1;12170:19:22;12146:44;;12131:121;;;;;;;;;;;;:::i;:::-;12310:25;12351:15;12338:29;;;;;;;;;;12481:9;;12598:15;;;;12310:57;;-1:-1:-1;12394:20:22;;;;;;12598:29;;;:60;;12643:2;:15;;;12598:60;;;12630:10;12598:60;12583:75;-1:-1:-1;12713:20:22;12697:12;:36;;;;;;;;;12693:899;;;12780:2;:15;;;12769:47;;;;;;;;;;;;:::i;:::-;12743:73;;-1:-1:-1;12743:73:22;-1:-1:-1;12877:29:22;;;12901:4;12877:29;12873:458;;;12918:52;12936:5;12943:12;12957:7;12966:3;12918:17;:52::i;:::-;13094:72;13117:5;13124:12;13138:7;13147:9;13158:3;13094:72;;;;;;;;;;;;:22;:72::i;:::-;12873:458;;;13244:78;;;;;:39;;;;;;:78;;13284:5;;13291:12;;13305:7;;13314:3;;13244:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12873:458;12693:899;;;13404:2;:15;;;13393:38;;;;;;;;;;;;:::i;:::-;13456:59;;;;;13378:53;;-1:-1:-1;13456:33:22;;;;;;:59;;13490:5;;13497:12;;13511:3;;13456:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13439:146;;;;;;;;;;;;:::i;:::-;11901:1695;;;;;;;;:::o;4870:648:12:-;5021:30;5027:5;5034:8;5044:6;5021:5;:30::i;:::-;953:3;5100:8;:18;5096:416;;5128:13;5144:21;;;:11;:21;;;;;;;;5173:35;;;;;5144:21;;;;;;;5173:22;;:35;;5196:3;;5201:6;;5173:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5224:14;:12;:14::i;:::-;5216:69;;;;;;;;;;;;:::i;:::-;5096:416;;;;5315:17;;;5307:74;;;;;;;;;;;;:::i;:::-;5390:12;5408:3;:8;;5424:6;5408:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5389:46;;;5451:7;5443:62;;;;;;;;;;;;:::i;3224:367:21:-;3376:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;3401:7;3376:24;:33::i;:::-;3353:15;;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;3455:13;;;;;;;;;;;:18;;;;;;;;:31;;3478:7;3455:22;:31::i;:::-;3434:13;;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:52;;;;3534;;;;;;;;;;;;;3434:13;;3534:52;;;;3549:10;;3534:52;;;;;;;;;;;3224:367;;;;:::o;3699:456::-;3891:16;:3;:14;;;:16::i;:::-;3887:264;;;3917:13;3955:3;3933:44;;;3983:9;3994:10;4006:5;4013:3;4018:7;4027:5;3933:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3933:100:21;;-1:-1:-1;4049:32:21;;;4059:22;4049:32;4041:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1033:396:29;1105:13;1154:1;1143;:8;:12;1128:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:1;1279;1268;:8;:12;1266:15;;;;;;;;;;;;1364:8;;1360:16;;1383:17;;;-1:-1:-1;1266:15:29;;;1033:396::o;1792:436::-;1891:14;1942:5;1950:2;1942:10;1930:1;:8;:22;;1915:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2185:13:29;2101:2;2185:13;2179:20;;1792:436::o;1419:158:31:-;1477:7;1504:5;;;1523:6;;;;1515:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:1;1419:158;-1:-1:-1;;;1419:158:31:o;1186:::-;1244:7;1272:1;1267;:6;;1259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1319:5:31;;;1186:158::o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;882:52;-1:-1:-1;;541:398:27:o;1351:336:30:-;1513:13;;;;;;;;;;;;;;;;;;;1557:88;;883:66;1557:88;;;;1628:4;1557:88;;;;;;;;;;;;;;;;;;;1536:119;;;;;;;;;;1487:194;;1439:14;;1536:119;;1665:10;;1487:194;;;;;1513:13;1487:194;;1513:13;1487:194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1487:194:30;;;;;;;-1:-1:-1;1487:194:30;;;;;;;;;;;;;;;1470:212;;;;;;1351:336;-1:-1:-1;;;1351:336:30:o;2456:257:24:-;2584:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;2609:7;2584:24;:33::i;:::-;2561:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;2647:61;;;;;;;;;;;;;2561:8;;2662:10;;2647:61;;;;;;;;;;2456:257;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:692:33:-;;127:3;120:4;112:6;108:17;104:27;94:2;;149:5;142;135:20;94:2;193:6;180:20;218:69;233:53;279:6;233:53;:::i;:::-;218:69;:::i;:::-;321:21;;;209:78;-1:-1:-1;361:4:33;381:14;;;;415:15;;;461;;;449:28;;445:37;;442:46;-1:-1:-1;439:2:33;;;501:1;498;491:12;439:2;523:1;533:167;547:6;544:1;541:13;533:167;;;608:17;;596:30;;646:12;;;;678;;;;569:1;562:9;533:167;;;537:3;;;;;84:622;;;;:::o;711:460::-;;808:3;801:4;793:6;789:17;785:27;775:2;;830:5;823;816:20;775:2;874:6;861:20;899:53;914:37;944:6;914:37;:::i;899:53::-;890:62;;975:6;968:5;961:21;1029:3;1022:4;1013:6;1005;1001:19;997:30;994:39;991:2;;;1046:1;1043;1036:12;991:2;1109:6;1102:4;1094:6;1090:17;1083:4;1076:5;1072:16;1059:57;1163:1;1136:18;;;1156:4;1132:29;1125:40;1140:5;765:406;-1:-1:-1;;765:406:33:o;1176:424::-;;1284:3;1277:4;1269:6;1265:17;1261:27;1251:2;;1306:5;1299;1292:20;1251:2;1343:6;1337:13;1368:53;1383:37;1413:6;1383:37;:::i;1368:53::-;1359:62;;1444:6;1437:5;1430:21;1498:3;1491:4;1482:6;1474;1470:19;1466:30;1463:39;1460:2;;;1515:1;1512;1505:12;1460:2;1528:66;1587:6;1580:4;1573:5;1569:16;1562:4;1554:6;1550:17;1528:66;:::i;:::-;;1241:359;;;;:::o;1605:812::-;;1724:4;1712:9;1707:3;1703:19;1699:30;1696:2;;;1746:5;1739;1732:20;1696:2;1783;1777:9;1825:4;1817:6;1813:17;1849:18;1917:6;1905:10;1902:22;1897:2;1885:10;1882:18;1879:46;1876:2;;;1928:9;1876:2;1959:10;1955:2;1948:22;1988:6;1979:15;;2024:9;2018:16;2010:6;2003:32;2089:2;2078:9;2074:18;2068:25;2063:2;2055:6;2051:15;2044:50;2139:2;2128:9;2124:18;2118:25;2103:40;;2152:35;2179:7;2152:35;:::i;:::-;2220:7;2215:2;2207:6;2203:15;2196:32;2272:2;2261:9;2257:18;2251:25;2237:39;;2299:2;2291:6;2288:14;2285:2;;;2315:1;2312;2305:12;2285:2;;2352:58;2406:3;2397:6;2386:9;2382:22;2352:58;:::i;:::-;2347:2;2339:6;2335:15;2328:83;;;1686:731;;;;:::o;2422:259::-;;2534:2;2522:9;2513:7;2509:23;2505:32;2502:2;;;2555:6;2547;2540:22;2502:2;2599:9;2586:23;2618:33;2645:5;2618:33;:::i;2686:271::-;;2817:2;2805:9;2796:7;2792:23;2788:32;2785:2;;;2838:6;2830;2823:22;2785:2;2875:9;2869:16;2894:33;2921:5;2894:33;:::i;2962:332::-;;;3110:2;3098:9;3089:7;3085:23;3081:32;3078:2;;;3131:6;3123;3116:22;3078:2;3168:9;3162:16;3187:33;3214:5;3187:33;:::i;:::-;3284:2;3269:18;;;;3263:25;3239:5;;3263:25;;-1:-1:-1;;;3068:226:33:o;3299:402::-;;;3428:2;3416:9;3407:7;3403:23;3399:32;3396:2;;;3449:6;3441;3434:22;3396:2;3493:9;3480:23;3512:33;3539:5;3512:33;:::i;:::-;3564:5;-1:-1:-1;3621:2:33;3606:18;;3593:32;3634:35;3593:32;3634:35;:::i;:::-;3688:7;3678:17;;;3386:315;;;;;:::o;3706:1137::-;;;;;;3953:3;3941:9;3932:7;3928:23;3924:33;3921:2;;;3975:6;3967;3960:22;3921:2;4019:9;4006:23;4038:33;4065:5;4038:33;:::i;:::-;4090:5;-1:-1:-1;4147:2:33;4132:18;;4119:32;4160:35;4119:32;4160:35;:::i;:::-;4214:7;-1:-1:-1;4272:2:33;4257:18;;4244:32;4295:18;4325:14;;;4322:2;;;4357:6;4349;4342:22;4322:2;4385:67;4444:7;4435:6;4424:9;4420:22;4385:67;:::i;:::-;4375:77;;4505:2;4494:9;4490:18;4477:32;4461:48;;4534:2;4524:8;4521:16;4518:2;;;4555:6;4547;4540:22;4518:2;4583:69;4644:7;4633:8;4622:9;4618:24;4583:69;:::i;:::-;4573:79;;4705:3;4694:9;4690:19;4677:33;4661:49;;4735:2;4725:8;4722:16;4719:2;;;4756:6;4748;4741:22;4719:2;;4784:53;4829:7;4818:8;4807:9;4803:24;4784:53;:::i;:::-;4774:63;;;3911:932;;;;;;;;:::o;4848:478::-;;;;5002:2;4990:9;4981:7;4977:23;4973:32;4970:2;;;5023:6;5015;5008:22;4970:2;5067:9;5054:23;5086:33;5113:5;5086:33;:::i;:::-;5138:5;-1:-1:-1;5195:2:33;5180:18;;5167:32;5208:35;5167:32;5208:35;:::i;:::-;4960:366;;5262:7;;-1:-1:-1;;;5316:2:33;5301:18;;;;5288:32;;4960:366::o;5331:768::-;;;;;;5528:3;5516:9;5507:7;5503:23;5499:33;5496:2;;;5550:6;5542;5535:22;5496:2;5594:9;5581:23;5613:33;5640:5;5613:33;:::i;:::-;5665:5;-1:-1:-1;5722:2:33;5707:18;;5694:32;5735:35;5694:32;5735:35;:::i;:::-;5789:7;-1:-1:-1;5843:2:33;5828:18;;5815:32;;-1:-1:-1;5894:2:33;5879:18;;5866:32;;-1:-1:-1;5949:3:33;5934:19;;5921:33;5977:18;5966:30;;5963:2;;;6014:6;6006;5999:22;5963:2;6042:51;6085:7;6076:6;6065:9;6061:22;6042:51;:::i;6104:1267::-;;;;;;;6357:3;6345:9;6336:7;6332:23;6328:33;6325:2;;;6379:6;6371;6364:22;6325:2;6423:9;6410:23;6442:33;6469:5;6442:33;:::i;:::-;6494:5;-1:-1:-1;6551:2:33;6536:18;;6523:32;6564:35;6523:32;6564:35;:::i;:::-;6618:7;-1:-1:-1;6676:2:33;6661:18;;6648:32;6699:18;6729:14;;;6726:2;;;6761:6;6753;6746:22;6726:2;6789:67;6848:7;6839:6;6828:9;6824:22;6789:67;:::i;:::-;6779:77;;6909:2;6898:9;6894:18;6881:32;6865:48;;6938:2;6928:8;6925:16;6922:2;;;6959:6;6951;6944:22;6922:2;6987:69;7048:7;7037:8;7026:9;7022:24;6987:69;:::i;:::-;6977:79;;7108:3;7097:9;7093:19;7080:33;7065:48;;7122:32;7146:7;7122:32;:::i;:::-;7173:7;;-1:-1:-1;7233:3:33;7218:19;;7205:33;;7250:16;;;7247:2;;;7284:6;7276;7269:22;7247:2;;7312:53;7357:7;7346:8;7335:9;7331:24;7312:53;:::i;:::-;7302:63;;;6315:1056;;;;;;;;:::o;7376:1129::-;;;;;;7615:3;7603:9;7594:7;7590:23;7586:33;7583:2;;;7637:6;7629;7622:22;7583:2;7681:9;7668:23;7700:33;7727:5;7700:33;:::i;:::-;7752:5;-1:-1:-1;7809:2:33;7794:18;;7781:32;7822:35;7781:32;7822:35;:::i;:::-;7876:7;-1:-1:-1;7934:2:33;7919:18;;7906:32;7957:18;7987:14;;;7984:2;;;8019:6;8011;8004:22;8510:898;;;;;;8693:3;8681:9;8672:7;8668:23;8664:33;8661:2;;;8715:6;8707;8700:22;8661:2;8759:9;8746:23;8778:33;8805:5;8778:33;:::i;:::-;8830:5;-1:-1:-1;8887:2:33;8872:18;;8859:32;8900:35;8859:32;8900:35;:::i;:::-;8954:7;-1:-1:-1;9013:2:33;8998:18;;8985:32;9026;8985;9026;:::i;:::-;9077:7;-1:-1:-1;9136:2:33;9121:18;;9108:32;9149;9108;9149;:::i;:::-;9200:7;-1:-1:-1;9258:3:33;9243:19;;9230:33;9286:18;9275:30;;9272:2;;;9323:6;9315;9308:22;9413:470;;;;9559:2;9547:9;9538:7;9534:23;9530:32;9527:2;;;9580:6;9572;9565:22;9888:898;;;;;;;10091:3;10079:9;10070:7;10066:23;10062:33;10059:2;;;10113:6;10105;10098:22;10059:2;10157:9;10144:23;10176:33;10203:5;10176:33;:::i;:::-;10228:5;-1:-1:-1;10285:2:33;10270:18;;10257:32;10298:35;10257:32;10298:35;:::i;:::-;10352:7;-1:-1:-1;10406:2:33;10391:18;;10378:32;;-1:-1:-1;10457:2:33;10442:18;;10429:32;;-1:-1:-1;10513:3:33;10498:19;;10485:33;10527:32;10485:33;10527:32;:::i;:::-;10578:7;-1:-1:-1;10636:3:33;10621:19;;10608:33;10664:18;10653:30;;10650:2;;;10701:6;10693;10686:22;10650:2;10729:51;10772:7;10763:6;10752:9;10748:22;10729:51;:::i;10791:760::-;;;;;;10980:3;10968:9;10959:7;10955:23;10951:33;10948:2;;;11002:6;10994;10987:22;11556:396;;;11682:2;11670:9;11661:7;11657:23;11653:32;11650:2;;;11703:6;11695;11688:22;11650:2;11747:9;11734:23;11766:33;11793:5;11766:33;:::i;:::-;11818:5;-1:-1:-1;11875:2:33;11860:18;;11847:32;11888;11847;11888;:::i;11957:779::-;;;;;12138:3;12126:9;12117:7;12113:23;12109:33;12106:2;;;12160:6;12152;12145:22;12106:2;12204:9;12191:23;12223:33;12250:5;12223:33;:::i;:::-;12275:5;-1:-1:-1;12327:2:33;12312:18;;12299:32;;-1:-1:-1;12382:2:33;12367:18;;12354:32;12405:18;12435:14;;;12432:2;;;12467:6;12459;12452:22;12432:2;12495:51;12538:7;12529:6;12518:9;12514:22;12495:51;:::i;:::-;12485:61;;12599:2;12588:9;12584:18;12571:32;12555:48;;12628:2;12618:8;12615:16;12612:2;;;12649:6;12641;12634:22;12612:2;;12677:53;12722:7;12711:8;12700:9;12696:24;12677:53;:::i;:::-;12667:63;;;12096:640;;;;;;;:::o;12741:327::-;;;12870:2;12858:9;12849:7;12845:23;12841:32;12838:2;;;12891:6;12883;12876:22;12838:2;12935:9;12922:23;12954:33;12981:5;12954:33;:::i;:::-;13006:5;13058:2;13043:18;;;;13030:32;;-1:-1:-1;;;12828:240:33:o;13073:1315::-;;;13252:2;13240:9;13231:7;13227:23;13223:32;13220:2;;;13273:6;13265;13258:22;13220:2;13318:9;13305:23;13347:18;13388:2;13380:6;13377:14;13374:2;;;13409:6;13401;13394:22;13374:2;13452:6;13441:9;13437:22;13427:32;;13497:7;13490:4;13486:2;13482:13;13478:27;13468:2;;13524:6;13516;13509:22;13468:2;13569;13556:16;13592:69;13607:53;13653:6;13607:53;:::i;13592:69::-;13683:3;13707:6;13702:3;13695:19;13733:4;13762:2;13757:3;13753:12;13746:19;;13793:2;13789;13785:11;13846:7;13841:2;13835;13827:6;13823:15;13819:2;13815:24;13811:33;13808:46;13805:2;;;13872:6;13864;13857:22;13805:2;13899:6;13890:15;;13914:244;13928:6;13925:1;13922:13;13914:244;;;14003:3;13990:17;14020:33;14047:5;14020:33;:::i;:::-;14066:18;;13950:1;13943:9;;;;;14104:12;;;;14136;;13914:244;;;-1:-1:-1;14177:5:33;;-1:-1:-1;14220:18:33;;14207:32;;-1:-1:-1;;;14251:16:33;;;14248:2;;;14285:6;14277;14270:22;14248:2;;14313:69;14374:7;14363:8;14352:9;14348:24;14313:69;:::i;:::-;14303:79;;;13210:1178;;;;;:::o;14393:257::-;;14513:2;14501:9;14492:7;14488:23;14484:32;14481:2;;;14534:6;14526;14519:22;14481:2;14571:9;14565:16;14590:30;14614:5;14590:30;:::i;14655:352::-;;14766:2;14754:9;14745:7;14741:23;14737:32;14734:2;;;14787:6;14779;14772:22;14734:2;14831:9;14818:23;14881:66;14874:5;14870:78;14863:5;14860:89;14850:2;;14968:6;14960;14953:22;15012:592;;;15170:2;15158:9;15149:7;15145:23;15141:32;15138:2;;;15191:6;15183;15176:22;15138:2;15229:9;15223:16;15258:18;15299:2;15291:6;15288:14;15285:2;;;15320:6;15312;15305:22;15285:2;15348:62;15402:7;15393:6;15382:9;15378:22;15348:62;:::i;:::-;15338:72;;15456:2;15445:9;15441:18;15435:25;15419:41;;15485:2;15475:8;15472:16;15469:2;;;15506:6;15498;15491:22;15469:2;;15534:64;15590:7;15579:8;15568:9;15564:24;15534:64;:::i;15609:389::-;;15760:2;15748:9;15739:7;15735:23;15731:32;15728:2;;;15781:6;15773;15766:22;15728:2;15819:9;15813:16;15852:18;15844:6;15841:30;15838:2;;;15889:6;15881;15874:22;15838:2;15917:75;15984:7;15975:6;15964:9;15960:22;15917:75;:::i;16003:624::-;;;16180:2;16168:9;16159:7;16155:23;16151:32;16148:2;;;16201:6;16193;16186:22;16148:2;16239:9;16233:16;16268:18;16309:2;16301:6;16298:14;16295:2;;;16330:6;16322;16315:22;16295:2;16358:75;16425:7;16416:6;16405:9;16401:22;16358:75;:::i;16632:190::-;;16744:2;16732:9;16723:7;16719:23;16715:32;16712:2;;;16765:6;16757;16750:22;16712:2;-1:-1:-1;16793:23:33;;16702:120;-1:-1:-1;16702:120:33:o;16827:545::-;17045:13;;16827:545;;17019:3;;17098:4;17125:15;;;16827:545;17170:175;17184:6;17181:1;17178:13;17170:175;;;17247:13;;17233:28;;17283:14;;;;17320:15;;;;17206:1;17199:9;17170:175;;;-1:-1:-1;17361:5:33;;16996:376;-1:-1:-1;;;;;;16996:376:33:o;17377:437::-;;17600:6;17594:13;17616:53;17662:6;17657:3;17650:4;17642:6;17638:17;17616:53;:::i;:::-;17691:16;;;;17716:21;;;-1:-1:-1;17764:4:33;17753:16;;17746:32;17805:2;17794:14;;17570:244;-1:-1:-1;17570:244:33:o;17819:546::-;;18060:6;18054:13;18076:53;18122:6;18117:3;18110:4;18102:6;18098:17;18076:53;:::i;:::-;18151:16;;18176:21;;;18222:13;;18244:68;18222:13;18296:4;18285:16;;;;18266:17;;18244:68;:::i;:::-;18332:20;18354:4;18328:31;;18030:335;-1:-1:-1;;;;;18030:335:33:o;18370:205::-;18570:3;18561:14::o;18580:226::-;18756:42;18744:55;;;;18726:74;;18714:2;18699:18;;18681:125::o;18811:414::-;19039:42;19108:15;;;19090:34;;19160:15;;;;19155:2;19140:18;;19133:43;19207:2;19192:18;;19185:34;;;;19017:2;19002:18;;18984:241::o;19230:305::-;19442:42;19430:55;;;;19412:74;;19517:2;19502:18;;19495:34;19400:2;19385:18;;19367:168::o;19943:653::-;20248:42;20317:15;;;20299:34;;20369:15;;;;20364:2;20349:18;;20342:43;20416:2;20401:18;;20394:34;20459:2;20444:18;;20437:34;;;;20508:3;20502;20487:19;;20480:32;;;19943:653;20528:19;;;20521:33;20586:3;20571:19;;20228:368::o;20903:635::-;21074:2;21126:21;;;21196:13;;21099:18;;;21218:22;;;20903:635;;21074:2;21297:15;;;;21271:2;21256:18;;;20903:635;21343:169;21357:6;21354:1;21351:13;21343:169;;;21418:13;;21406:26;;21487:15;;;;21452:12;;;;21379:1;21372:9;21343:169;;;-1:-1:-1;21529:3:33;;21054:484;-1:-1:-1;;;;;;21054:484:33:o;21543:187::-;21708:14;;21701:22;21683:41;;21671:2;21656:18;;21638:92::o;21735:614::-;22022:25;;;22066:42;22144:15;;;22139:2;22124:18;;22117:43;22196:15;;;;22191:2;22176:18;;22169:43;22243:2;22228:18;;22221:34;22286:3;22271:19;;22264:35;;;;22330:3;22315:19;;22308:35;22009:3;21994:19;;21976:373::o;22354:542::-;22613:25;;;22657:42;22735:15;;;22730:2;22715:18;;22708:43;22787:15;;;;22782:2;22767:18;;22760:43;22834:2;22819:18;;22812:34;;;;22877:3;22862:19;;22855:35;22600:3;22585:19;;22567:329::o;23520:248::-;23694:66;23682:79;;;;23664:98;;23652:2;23637:18;;23619:149::o;23773:409::-;23975:2;23957:21;;;24014:2;23994:18;;;23987:30;24053:34;24048:2;24033:18;;24026:62;24124:15;24119:2;24104:18;;24097:43;24172:3;24157:19;;23947:235::o;24187:407::-;24389:2;24371:21;;;24428:2;24408:18;;;24401:30;24467:34;24462:2;24447:18;;24440:62;24538:13;24533:2;24518:18;;24511:41;24584:3;24569:19;;24361:233::o;24599:424::-;24801:2;24783:21;;;24840:2;24820:18;;;24813:30;24879:34;24874:2;24859:18;;24852:62;24950:30;24945:2;24930:18;;24923:58;25013:3;24998:19;;24773:250::o;25028:408::-;25230:2;25212:21;;;25269:2;25249:18;;;25242:30;25308:34;25303:2;25288:18;;25281:62;25379:14;25374:2;25359:18;;25352:42;25426:3;25411:19;;25202:234::o;25441:405::-;25643:2;25625:21;;;25682:2;25662:18;;;25655:30;25721:34;25716:2;25701:18;;25694:62;25792:11;25787:2;25772:18;;25765:39;25836:3;25821:19;;25615:231::o;25851:415::-;26053:2;26035:21;;;26092:2;26072:18;;;26065:30;26131:34;26126:2;26111:18;;26104:62;26202:21;26197:2;26182:18;;26175:49;26256:3;26241:19;;26025:241::o;26271:415::-;26473:2;26455:21;;;26512:2;26492:18;;;26485:30;26551:34;26546:2;26531:18;;26524:62;26622:21;26617:2;26602:18;;26595:49;26676:3;26661:19;;26445:241::o;26691:469::-;26893:2;26875:21;;;26932:2;26912:18;;;26905:30;26971:34;26966:2;26951:18;;26944:62;27042:34;27037:2;27022:18;;27015:62;27114:3;27108;27093:19;;27086:32;27150:3;27135:19;;26865:295::o;27165:408::-;27367:2;27349:21;;;27406:2;27386:18;;;27379:30;27445:34;27440:2;27425:18;;27418:62;27516:14;27511:2;27496:18;;27489:42;27563:3;27548:19;;27339:234::o;27578:413::-;27780:2;27762:21;;;27819:2;27799:18;;;27792:30;27858:34;27853:2;27838:18;;27831:62;27929:19;27924:2;27909:18;;27902:47;27981:3;27966:19;;27752:239::o;27996:414::-;28198:2;28180:21;;;28237:2;28217:18;;;28210:30;28276:34;28271:2;28256:18;;28249:62;28347:20;28342:2;28327:18;;28320:48;28400:3;28385:19;;28170:240::o;28415:420::-;28617:2;28599:21;;;28656:2;28636:18;;;28629:30;28695:34;28690:2;28675:18;;28668:62;28766:26;28761:2;28746:18;;28739:54;28825:3;28810:19;;28589:246::o;28840:406::-;29042:2;29024:21;;;29081:2;29061:18;;;29054:30;29120:34;29115:2;29100:18;;29093:62;29191:12;29186:2;29171:18;;29164:40;29236:3;29221:19;;29014:232::o;29251:411::-;29453:2;29435:21;;;29492:2;29472:18;;;29465:30;29531:34;29526:2;29511:18;;29504:62;29602:17;29597:2;29582:18;;29575:45;29652:3;29637:19;;29425:237::o;29667:411::-;29869:2;29851:21;;;29908:2;29888:18;;;29881:30;29947:34;29942:2;29927:18;;29920:62;30018:17;30013:2;29998:18;;29991:45;30068:3;30053:19;;29841:237::o;30083:410::-;30285:2;30267:21;;;30324:2;30304:18;;;30297:30;30363:34;30358:2;30343:18;;30336:62;30434:16;30429:2;30414:18;;30407:44;30483:3;30468:19;;30257:236::o;30498:177::-;30644:25;;;30632:2;30617:18;;30599:76::o;30680:242::-;30750:2;30744:9;30780:17;;;30827:18;30812:34;;30848:22;;;30809:62;30806:2;;;30874:9;30806:2;30901;30894:22;30724:198;;-1:-1:-1;30724:198:33:o;30927:183::-;;31026:18;31018:6;31015:30;31012:2;;;31048:9;31012:2;-1:-1:-1;31099:4:33;31080:17;;;31076:28;;31002:108::o;31115:240::-;;31198:18;31190:6;31187:30;31184:2;;;31220:9;31184:2;-1:-1:-1;31268:4:33;31256:17;31275:66;31252:90;31344:4;31248:101;;31174:181::o;31360:258::-;31432:1;31442:113;31456:6;31453:1;31450:13;31442:113;;;31532:11;;;31526:18;31513:11;;;31506:39;31478:2;31471:10;31442:113;;;31573:6;31570:1;31567:13;31564:2;;;-1:-1:-1;;31608:1:33;31590:16;;31583:27;31413:205::o;31623:156::-;31711:42;31704:5;31700:54;31693:5;31690:65;31680:2;;31769:1;31766;31759:12;31680:2;31670:109;:::o;31784:120::-;31872:5;31865:13;31858:21;31851:5;31848:32;31838:2;;31894:1;31891;31884:12"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "deposit(address,address,uint256)": "8340f549",
              "getIdAddress(uint256)": "7358e9a5",
              "getNTokens()": "9040a949",
              "getNonce(address)": "2d0335ab",
              "getTokenID(address)": "63f8071c",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isValidSignature(address,bytes32,bytes,bytes)": "fa4e12d7",
              "metaSafeBatchTransferFrom(address,address,uint256[],uint256[],bool,bytes)": "a3d4926e",
              "metaSafeTransferFrom(address,address,uint256,uint256,bool,bytes)": "ce0b514b",
              "metaSetApprovalForAll(address,address,bool,bool,bytes)": "f5d4c820",
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "withdraw(address,address,uint256)": "d9caed12"
            }
          }
        }
      },
      "contracts/utils/ReentrancyGuard.sol": {
        "ReentrancyGuard": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b506000805460ff19166001179055603f80602a6000396000f3fe6080604052600080fdfea264697066735822122054711abb7464dc17bed7130abfd121328f05962b5fe32cbab99e70fc35b8c1cd64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x3F DUP1 PUSH1 0x2A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD PUSH18 0x1ABB7464DC17BED7130ABFD121328F05962B 0x5F 0xE3 0x2C 0xBA 0xB9 SWAP15 PUSH17 0xFC35B8C1CD64736F6C6343000704003300 ",
              "sourceMap": "732:1251:8:-:0;;;790:432;;;;;;;;;-1:-1:-1;1199:11:8;:18;;-1:-1:-1;;1199:18:8;1213:4;1199:18;;;732:1251;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea264697066735822122054711abb7464dc17bed7130abfd121328f05962b5fe32cbab99e70fc35b8c1cd64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD PUSH18 0x1ABB7464DC17BED7130ABFD121328F05962B 0x5F 0xE3 0x2C 0xBA 0xB9 SWAP15 PUSH17 0xFC35B8C1CD64736F6C6343000704003300 ",
              "sourceMap": "732:1251:8:-:0;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "contracts/utils/WrapAndNiftyswap.sol": {
        "WrapAndNiftyswap": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address payable",
                  "name": "_tokenWrapper",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_exchange",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_erc20",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_erc1155",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "erc1155",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "erc20",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "exchange",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_niftyswapOrder",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "tokenWrapper",
              "outputs": [
                {
                  "internalType": "contract IERC20Wrapper",
                  "name": "",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_maxAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "_recipient",
                  "type": "address"
                },
                {
                  "internalType": "bytes",
                  "name": "_niftyswapOrder",
                  "type": "bytes"
                }
              ],
              "name": "wrapAndSwap",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:2272:33",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:33",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "154:540:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "201:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "210:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "218:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "203:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "203:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "203:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "175:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "184:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "171:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "171:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "196:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "167:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "167:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "164:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "236:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "255:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "249:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "249:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "240:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "301:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "274:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "274:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "274:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "316:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "326:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "316:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "340:40:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "365:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "376:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "361:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "361:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "355:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "355:25:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "344:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "416:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "389:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "389:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "389:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "433:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "443:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "433:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "459:40:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "484:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "495:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "480:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "480:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "474:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "474:25:33"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "463:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "535:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "508:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "508:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "508:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "552:17:33",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "562:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "552:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "578:40:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "603:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "614:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "599:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "599:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "593:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "593:25:33"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "582:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "654:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "627:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "627:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "627:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "671:17:33",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "681:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "671:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_addresst_addresst_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "96:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "107:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "119:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "127:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "135:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "143:6:33",
                            "type": ""
                          }
                        ],
                        "src": "14:680:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "777:219:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "823:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "832:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "840:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "825:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "825:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "825:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "798:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "807:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "794:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "794:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "819:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "790:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "790:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "787:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "858:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "877:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "871:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "871:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "862:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "940:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "949:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "957:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "942:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "942:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "942:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "909:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "930:5:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "923:6:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "923:13:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "916:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "916:21:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "906:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "906:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "899:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "899:40:33"
                              },
                              "nodeType": "YulIf",
                              "src": "896:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "975:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "985:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "975:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "743:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "754:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "766:6:33",
                            "type": ""
                          }
                        ],
                        "src": "699:297:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1082:113:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1128:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1137:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1145:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1130:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1130:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1130:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1103:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1112:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1099:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1099:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1124:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1095:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1095:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1092:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1163:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1179:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1173:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1173:16:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1163:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1048:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1059:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1071:6:33",
                            "type": ""
                          }
                        ],
                        "src": "1001:194:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1301:102:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1311:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1323:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1334:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1319:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1319:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1311:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1353:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1368:6:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1384:3:33",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1389:1:33",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1380:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1380:11:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1393:1:33",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1376:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1376:19:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1364:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1364:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1346:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1346:51:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1346:51:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1270:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1281:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1292:4:33",
                            "type": ""
                          }
                        ],
                        "src": "1200:203:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1630:145:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1640:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1652:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1663:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1648:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1648:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1640:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1682:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1697:6:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1713:3:33",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1718:1:33",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1709:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1709:11:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1722:1:33",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1705:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1705:19:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1693:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1693:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1675:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1675:51:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1675:51:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1746:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1757:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1742:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1742:18:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1762:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1735:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1735:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1735:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1591:9:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1602:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1610:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1621:4:33",
                            "type": ""
                          }
                        ],
                        "src": "1408:367:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1954:178:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1971:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1982:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1964:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1964:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1964:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2005:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2016:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2001:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2001:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2021:2:33",
                                    "type": "",
                                    "value": "28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1994:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1994:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1994:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2044:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2055:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2040:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2040:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2060:30:33",
                                    "type": "",
                                    "value": "INVALID CONSTRUCTOR ARGUMENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2033:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2033:58:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2033:58:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2100:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2112:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2123:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2108:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2108:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2100:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_cafbc8c54e5d74044a6e4f938f7c88a87e39c80c238cc62d832a59732539333c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1931:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1945:4:33",
                            "type": ""
                          }
                        ],
                        "src": "1780:352:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2184:86:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2248:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2257:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2260:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2250:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2250:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2250:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "2207:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "2218:5:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2233:3:33",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2238:1:33",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2229:3:33"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2229:11:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2242:1:33",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "2225:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2225:19:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2214:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2214:31:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "2204:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2204:42:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2197:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2197:50:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2194:2:33"
                            }
                          ]
                        },
                        "name": "validator_revert_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2173:5:33",
                            "type": ""
                          }
                        ],
                        "src": "2137:133:33"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_address_payablet_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := mload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let value_2 := mload(add(headStart, 64))\n        validator_revert_t_address(value_2)\n        value2 := value_2\n        let value_3 := mload(add(headStart, 96))\n        validator_revert_t_address(value_3)\n        value3 := value_3\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address_payable_t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_stringliteral_cafbc8c54e5d74044a6e4f938f7c88a87e39c80c238cc62d832a59732539333c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 28)\n        mstore(add(headStart, 64), \"INVALID CONSTRUCTOR ARGUMENT\")\n        tail := add(headStart, 96)\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
                  "id": 33,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101206040523480156200001257600080fd5b5060405162001a8038038062001a808339810160408190526200003591620001ec565b6001600160a01b038416158015906200005657506001600160a01b03831615155b80156200006b57506001600160a01b03821615155b80156200008057506001600160a01b03811615155b620000a85760405162461bcd60e51b81526004016200009f90620002c2565b60405180910390fd5b6001600160601b0319606085811b821660805284811b821660a05283811b821660c05282901b1660e05260405163095ea7b360e01b81526001600160a01b0383169063095ea7b3906200010490879060001990600401620002a9565b602060405180830381600087803b1580156200011f57600080fd5b505af115801562000134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015a919062000253565b506040516318fe01c760e21b81526001600160a01b038516906363f8071c906200018990859060040162000295565b60206040518083038186803b158015620001a257600080fd5b505afa158015620001b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001dd91906200027c565b61010052506200031292505050565b6000806000806080858703121562000202578384fd5b84516200020f81620002f9565b60208601519094506200022281620002f9565b60408601519093506200023581620002f9565b60608601519092506200024881620002f9565b939692955090935050565b60006020828403121562000265578081fd5b8151801515811462000275578182fd5b9392505050565b6000602082840312156200028e578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252601c908201527f494e56414c494420434f4e5354525543544f5220415247554d454e5400000000604082015260600190565b6001600160a01b03811681146200030f57600080fd5b50565b60805160601c60a05160601c60c05160601c60e05160601c610100516116c3620003bd6000398061040052806104f452806109bd52508061068452806107825280610c4952508061010252806101f352806102e952806105de5280610aa75280610b405250806103de52806108c35280610c255250806102bc52806103af52806104c552806105b1528061071c528061098e5280610a7a5280610c015280610c8552506116c36000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063c5e3dfd81161005b578063c5e3dfd8146100d5578063d2f7265a146100dd578063d56022d7146100e5578063f23a6e61146100ed5761007d565b8063785e9e8614610082578063a874d5b6146100a0578063bc197c81146100b5575b600080fd5b61008a610100565b60405161009791906112e6565b60405180910390f35b6100b36100ae3660046111bf565b610124565b005b6100c86100c3366004610eee565b6106f7565b604051610097919061147a565b61008a610bff565b61008a610c23565b61008a610c47565b6100c86100fb366004610fa5565b610c6b565b7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610d08565b61013882840184611042565b805190925073ffffffffffffffffffffffffffffffffffffffff16159050806101775750805173ffffffffffffffffffffffffffffffffffffffff1630145b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad9061160a565b60405180910390fd5b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061022c90339030908a90600401611307565b602060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027e919061101b565b506040517f8340f54900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638340f54990610315907f00000000000000000000000000000000000000000000000000000000000000009030908a90600401611307565b600060405180830381600087803b15801561032f57600080fd5b505af1158015610343573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9061042e9030907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908b908a908a9060040161140e565b600060405180830381600087803b15801561044857600080fd5b505af115801561045c573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681556040517efdd58e00000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e9061051c9030907f000000000000000000000000000000000000000000000000000000000000000090600401611454565b60206040518083038186803b15801561053457600080fd5b505afa158015610548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056c91906111a7565b9050801561063d576040517fd9caed1200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d9caed129061060a907f00000000000000000000000000000000000000000000000000000000000000009089908690600401611307565b600060405180830381600087803b15801561062457600080fd5b505af1158015610638573d6000803e3d6000fd5b505050505b602082015160408084015190517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692632eb2c2d6926106bd9230928b9290916004016113a9565b600060405180830381600087803b1580156106d757600080fd5b505af11580156106eb573d6000803e3d6000fd5b50505050505050505050565b6000805460ff168061073e57503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b1561076a57507fbc197c8100000000000000000000000000000000000000000000000000000000610bf3565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90611587565b6107e1610d46565b6107ed8385018561110c565b805190925073ffffffffffffffffffffffffffffffffffffffff161590508061082c5750805173ffffffffffffffffffffffffffffffffffffffff1630145b610862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad906114a7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2eb2c2d60000000000000000000000000000000000000000000000000000000081523390632eb2c2d6906108f79030907f0000000000000000000000000000000000000000000000000000000000000000908d908d908d908d908d908d90600401611338565b600060405180830381600087803b15801561091157600080fd5b505af1158015610925573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681556040517efdd58e00000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e906109e59030907f000000000000000000000000000000000000000000000000000000000000000090600401611454565b60206040518083038186803b1580156109fd57600080fd5b505afa158015610a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3591906111a7565b90508015610bcd576040517fd9caed1200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d9caed1290610ad3907f00000000000000000000000000000000000000000000000000000000000000009030908690600401611307565b600060405180830381600087803b158015610aed57600080fd5b505af1158015610b01573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb9150610b79908d908590600401611454565b602060405180830381600087803b158015610b9357600080fd5b505af1158015610ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcb919061101b565b505b507fbc197c81000000000000000000000000000000000000000000000000000000009150505b98975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610cdc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad9061152a565b507ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600081525090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b803573ffffffffffffffffffffffffffffffffffffffff81168114610da157600080fd5b919050565b60008083601f840112610db7578182fd5b50813567ffffffffffffffff811115610dce578182fd5b6020830191508360208083028501011115610de857600080fd5b9250929050565b600082601f830112610dff578081fd5b813567ffffffffffffffff80821115610e1457fe5b602080830260405182828201018181108582111715610e2f57fe5b604052848152945081850192508582018187018301881015610e5057600080fd5b600091505b84821015610e73578035845292820192600191909101908201610e55565b505050505092915050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610da157600080fd5b60008083601f840112610ebf578182fd5b50813567ffffffffffffffff811115610ed6578182fd5b602083019150836020828501011115610de857600080fd5b60008060008060008060008060a0898b031215610f09578384fd5b610f1289610d7d565b9750610f2060208a01610d7d565b9650604089013567ffffffffffffffff80821115610f3c578586fd5b610f488c838d01610da6565b909850965060608b0135915080821115610f60578586fd5b610f6c8c838d01610da6565b909650945060808b0135915080821115610f84578384fd5b50610f918b828c01610eae565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215610fbd578182fd5b610fc687610d7d565b9550610fd460208801610d7d565b94506040870135935060608701359250608087013567ffffffffffffffff811115610ffd578283fd5b61100989828a01610eae565b979a9699509497509295939492505050565b60006020828403121561102c578081fd5b8151801515811461103b578182fd5b9392505050565b60008060408385031215611054578182fd5b61105d83610e7e565b9150602083013567ffffffffffffffff80821115611079578283fd5b908401906080828703121561108c578283fd5b6040516080810181811083821117156110a157fe5b6040526110ad83610d7d565b81526020830135828111156110c0578485fd5b6110cc88828601610def565b6020830152506040830135828111156110e3578485fd5b6110ef88828601610def565b604083015250606083013560608201528093505050509250929050565b600080828403608081121561111f578283fd5b61112884610e7e565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215611159578182fd5b506040516060810181811067ffffffffffffffff8211171561117757fe5b60405261118660208501610d7d565b81526040840135602082015260608401356040820152809150509250929050565b6000602082840312156111b8578081fd5b5051919050565b600080600080606085870312156111d4578384fd5b843593506111e460208601610d7d565b9250604085013567ffffffffffffffff8111156111ff578283fd5b61120b87828801610eae565b95989497509550505050565b60008284527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611248578081fd5b6020830280836020870137939093016020019283525090919050565b6000815180845260208085019450808401835b8381101561129357815187529582019590820190600101611277565b509495945050505050565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261137260a08301888a611217565b8281036060840152611385818789611217565b9050828103608084015261139a81858761129e565b9b9a5050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060a060408301526113e260a0830185611264565b82810360608401526113f48185611264565b838103608090940193909352508152602001949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a06080830152610bf360a08301848661129e565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252604e908201527f57726170416e644e6966747973776170236f6e4552433131353542617463685260408201527f656365697665643a204f5244455220524543495049454e54204d55535420424560608201527f205448495320434f4e5452414354000000000000000000000000000000000000608082015260a00190565b6020808252603c908201527f57726170416e644e6966747973776170236f6e4552433131353552656365697660408201527f65643a20494e56414c49445f455243313135355f524543454956454400000000606082015260800190565b60208082526041908201527f57726170416e644e6966747973776170236f6e4552433131353542617463685260408201527f656365697665643a20494e56414c49445f455243313135355f5245434549564560608201527f4400000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526043908201527f57726170416e644e69667479737761702377726170416e64537761703a204f5260408201527f44455220524543495049454e54204d555354204245205448495320434f4e545260608201527f4143540000000000000000000000000000000000000000000000000000000000608082015260a0019056fea2646970667358221220e0ba31386d0d5d1d4991248dd9baf24680fdeb8d88c41efac70e198e627f05ff64736f6c63430007040033",
              "opcodes": "PUSH2 0x120 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1A80 CODESIZE SUB DUP1 PUSH3 0x1A80 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x1EC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH3 0x56 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0x6B JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH3 0x80 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO ISZERO JUMPDEST PUSH3 0xA8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x9F SWAP1 PUSH3 0x2C2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 DUP6 DUP2 SHL DUP3 AND PUSH1 0x80 MSTORE DUP5 DUP2 SHL DUP3 AND PUSH1 0xA0 MSTORE DUP4 DUP2 SHL DUP3 AND PUSH1 0xC0 MSTORE DUP3 SWAP1 SHL AND PUSH1 0xE0 MSTORE PUSH1 0x40 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0x95EA7B3 SWAP1 PUSH3 0x104 SWAP1 DUP8 SWAP1 PUSH1 0x0 NOT SWAP1 PUSH1 0x4 ADD PUSH3 0x2A9 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x134 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x15A SWAP2 SWAP1 PUSH3 0x253 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x18FE01C7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x63F8071C SWAP1 PUSH3 0x189 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH3 0x295 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0x1B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH3 0x1DD SWAP2 SWAP1 PUSH3 0x27C JUMP JUMPDEST PUSH2 0x100 MSTORE POP PUSH3 0x312 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH3 0x202 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 MLOAD PUSH3 0x20F DUP2 PUSH3 0x2F9 JUMP JUMPDEST PUSH1 0x20 DUP7 ADD MLOAD SWAP1 SWAP5 POP PUSH3 0x222 DUP2 PUSH3 0x2F9 JUMP JUMPDEST PUSH1 0x40 DUP7 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x235 DUP2 PUSH3 0x2F9 JUMP JUMPDEST PUSH1 0x60 DUP7 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0x248 DUP2 PUSH3 0x2F9 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x265 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH3 0x275 JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x28E JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1C SWAP1 DUP3 ADD MSTORE PUSH32 0x494E56414C494420434F4E5354525543544F5220415247554D454E5400000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x30F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH1 0xE0 MLOAD PUSH1 0x60 SHR PUSH2 0x100 MLOAD PUSH2 0x16C3 PUSH3 0x3BD PUSH1 0x0 CODECOPY DUP1 PUSH2 0x400 MSTORE DUP1 PUSH2 0x4F4 MSTORE DUP1 PUSH2 0x9BD MSTORE POP DUP1 PUSH2 0x684 MSTORE DUP1 PUSH2 0x782 MSTORE DUP1 PUSH2 0xC49 MSTORE POP DUP1 PUSH2 0x102 MSTORE DUP1 PUSH2 0x1F3 MSTORE DUP1 PUSH2 0x2E9 MSTORE DUP1 PUSH2 0x5DE MSTORE DUP1 PUSH2 0xAA7 MSTORE DUP1 PUSH2 0xB40 MSTORE POP DUP1 PUSH2 0x3DE MSTORE DUP1 PUSH2 0x8C3 MSTORE DUP1 PUSH2 0xC25 MSTORE POP DUP1 PUSH2 0x2BC MSTORE DUP1 PUSH2 0x3AF MSTORE DUP1 PUSH2 0x4C5 MSTORE DUP1 PUSH2 0x5B1 MSTORE DUP1 PUSH2 0x71C MSTORE DUP1 PUSH2 0x98E MSTORE DUP1 PUSH2 0xA7A MSTORE DUP1 PUSH2 0xC01 MSTORE DUP1 PUSH2 0xC85 MSTORE POP PUSH2 0x16C3 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC5E3DFD8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC5E3DFD8 EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0xD2F7265A EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0xD56022D7 EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0xED JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x785E9E86 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0xA874D5B6 EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0xB5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0xAE CALLDATASIZE PUSH1 0x4 PUSH2 0x11BF JUMP JUMPDEST PUSH2 0x124 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0xEEE JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x147A JUMP JUMPDEST PUSH2 0x8A PUSH2 0xBFF JUMP JUMPDEST PUSH2 0x8A PUSH2 0xC23 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xC47 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0xFB CALLDATASIZE PUSH1 0x4 PUSH2 0xFA5 JUMP JUMPDEST PUSH2 0xC6B JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x12C PUSH2 0xD08 JUMP JUMPDEST PUSH2 0x138 DUP3 DUP5 ADD DUP5 PUSH2 0x1042 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO SWAP1 POP DUP1 PUSH2 0x177 JUMPI POP DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS EQ JUMPDEST PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0x160A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x22C SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x27E SWAP2 SWAP1 PUSH2 0x101B JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x8340F54900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8340F549 SWAP1 PUSH2 0x315 SWAP1 PUSH32 0x0 SWAP1 ADDRESS SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x343 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF242432A SWAP1 PUSH2 0x42E SWAP1 ADDRESS SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP12 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x140E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 POP PUSH3 0xFDD58E SWAP1 PUSH2 0x51C SWAP1 ADDRESS SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1454 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x56C SWAP2 SWAP1 PUSH2 0x11A7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x63D JUMPI PUSH1 0x40 MLOAD PUSH32 0xD9CAED1200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD9CAED12 SWAP1 PUSH2 0x60A SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x638 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD SWAP1 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x2EB2C2D6 SWAP3 PUSH2 0x6BD SWAP3 ADDRESS SWAP3 DUP12 SWAP3 SWAP1 SWAP2 PUSH1 0x4 ADD PUSH2 0x13A9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x73E JUMPI POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ JUMPDEST ISZERO PUSH2 0x76A JUMPI POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH2 0xBF3 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x7E1 PUSH2 0xD46 JUMP JUMPDEST PUSH2 0x7ED DUP4 DUP6 ADD DUP6 PUSH2 0x110C JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO SWAP1 POP DUP1 PUSH2 0x82C JUMPI POP DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS EQ JUMPDEST PUSH2 0x862 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0x14A7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0x2EB2C2D6 SWAP1 PUSH2 0x8F7 SWAP1 ADDRESS SWAP1 PUSH32 0x0 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH1 0x4 ADD PUSH2 0x1338 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x925 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 POP PUSH3 0xFDD58E SWAP1 PUSH2 0x9E5 SWAP1 ADDRESS SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1454 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA35 SWAP2 SWAP1 PUSH2 0x11A7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xBCD JUMPI PUSH1 0x40 MLOAD PUSH32 0xD9CAED1200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD9CAED12 SWAP1 PUSH2 0xAD3 SWAP1 PUSH32 0x0 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 POP PUSH4 0xA9059CBB SWAP2 POP PUSH2 0xB79 SWAP1 DUP14 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1454 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBCB SWAP2 SWAP1 PUSH2 0x101B JUMP JUMPDEST POP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP2 POP POP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xCDC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0x152A JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xDB7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDCE JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0xDE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xDFF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE14 JUMPI INVALID JUMPDEST PUSH1 0x20 DUP1 DUP4 MUL PUSH1 0x40 MLOAD DUP3 DUP3 DUP3 ADD ADD DUP2 DUP2 LT DUP6 DUP3 GT OR ISZERO PUSH2 0xE2F JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP5 DUP2 MSTORE SWAP5 POP DUP2 DUP6 ADD SWAP3 POP DUP6 DUP3 ADD DUP2 DUP8 ADD DUP4 ADD DUP9 LT ISZERO PUSH2 0xE50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP5 DUP3 LT ISZERO PUSH2 0xE73 JUMPI DUP1 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD SWAP1 DUP3 ADD PUSH2 0xE55 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xDA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xEBF JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xED6 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xDE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0xF09 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xF12 DUP10 PUSH2 0xD7D JUMP JUMPDEST SWAP8 POP PUSH2 0xF20 PUSH1 0x20 DUP11 ADD PUSH2 0xD7D JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF3C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0xF48 DUP13 DUP4 DUP14 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x60 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF60 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0xF6C DUP13 DUP4 DUP14 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF84 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0xF91 DUP12 DUP3 DUP13 ADD PUSH2 0xEAE JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xFBD JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xFC6 DUP8 PUSH2 0xD7D JUMP JUMPDEST SWAP6 POP PUSH2 0xFD4 PUSH1 0x20 DUP9 ADD PUSH2 0xD7D JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFFD JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1009 DUP10 DUP3 DUP11 ADD PUSH2 0xEAE JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x102C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x103B JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1054 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x105D DUP4 PUSH2 0xE7E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1079 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x80 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x108C JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x10A1 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x10AD DUP4 PUSH2 0xD7D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x10C0 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x10CC DUP9 DUP3 DUP7 ADD PUSH2 0xDEF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x10E3 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x10EF DUP9 DUP3 DUP7 ADD PUSH2 0xDEF JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x111F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1128 DUP5 PUSH2 0xE7E JUMP JUMPDEST SWAP3 POP PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD SLT ISZERO PUSH2 0x1159 JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1177 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x1186 PUSH1 0x20 DUP6 ADD PUSH2 0xD7D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B8 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x11D4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH2 0x11E4 PUSH1 0x20 DUP7 ADD PUSH2 0xD7D JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11FF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x120B DUP8 DUP3 DUP9 ADD PUSH2 0xEAE JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x1248 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x20 DUP4 MUL DUP1 DUP4 PUSH1 0x20 DUP8 ADD CALLDATACOPY SWAP4 SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1293 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1277 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE DUP3 DUP3 PUSH1 0x20 DUP7 ADD CALLDATACOPY DUP1 PUSH1 0x20 DUP5 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP6 ADD AND DUP6 ADD ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP12 AND DUP4 MSTORE DUP1 DUP11 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1372 PUSH1 0xA0 DUP4 ADD DUP9 DUP11 PUSH2 0x1217 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x1385 DUP2 DUP8 DUP10 PUSH2 0x1217 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x139A DUP2 DUP6 DUP8 PUSH2 0x129E JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x13E2 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x1264 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x13F4 DUP2 DUP6 PUSH2 0x1264 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE DUP1 DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP6 PUSH1 0x40 DUP4 ADD MSTORE DUP5 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0xBF3 PUSH1 0xA0 DUP4 ADD DUP5 DUP7 PUSH2 0x129E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x4E SWAP1 DUP3 ADD MSTORE PUSH32 0x57726170416E644E6966747973776170236F6E45524331313535426174636852 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656365697665643A204F5244455220524543495049454E54204D555354204245 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x205448495320434F4E5452414354000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3C SWAP1 DUP3 ADD MSTORE PUSH32 0x57726170416E644E6966747973776170236F6E45524331313535526563656976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x65643A20494E56414C49445F455243313135355F524543454956454400000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x41 SWAP1 DUP3 ADD MSTORE PUSH32 0x57726170416E644E6966747973776170236F6E45524331313535426174636852 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656365697665643A20494E56414C49445F455243313135355F52454345495645 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x43 SWAP1 DUP3 ADD MSTORE PUSH32 0x57726170416E644E69667479737761702377726170416E64537761703A204F52 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x44455220524543495049454E54204D555354204245205448495320434F4E5452 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4143540000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 0xBA BALANCE CODESIZE PUSH14 0xD5D1D4991248DD9BAF24680FDEB DUP14 DUP9 0xC4 0x1E STATICCALL 0xC7 0xE NOT DUP15 PUSH3 0x7F05FF PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "831:5420:9:-:0;;;1410:792;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1554:29:9;;;;;;:64;;-1:-1:-1;;;;;;1593:25:9;;;;1554:64;:96;;;;-1:-1:-1;;;;;;1628:22:9;;;;1554:96;:130;;;;-1:-1:-1;;;;;;1660:24:9;;;;1554:130;1539:189;;;;-1:-1:-1;;;1539:189:9;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;;1735:43:9;;;;;;;;1784:20;;;;;;;1810:14;;;;;;;1830:18;;;;;;2049:47;;-1:-1:-1;;;2049:47:9;;-1:-1:-1;;;;;1810:14:9;;;2049:22;;:47;;1764:13;;-1:-1:-1;;2087:8:9;2049:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2150:47:9;;-1:-1:-1;;;2150:47:9;;-1:-1:-1;;;;;2150:39:9;;;;;:47;;2190:6;;2150:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2133:64;;-1:-1:-1;831:5420:9;;-1:-1:-1;;;831:5420:9;14:680:33;;;;;196:3;184:9;175:7;171:23;167:33;164:2;;;218:6;210;203:22;164:2;255:9;249:16;274:33;301:5;274:33;:::i;:::-;376:2;361:18;;355:25;326:5;;-1:-1:-1;389:35:33;355:25;389:35;:::i;:::-;495:2;480:18;;474:25;443:7;;-1:-1:-1;508:35:33;474:25;508:35;:::i;:::-;614:2;599:18;;593:25;562:7;;-1:-1:-1;627:35:33;593:25;627:35;:::i;:::-;154:540;;;;-1:-1:-1;154:540:33;;-1:-1:-1;;154:540:33:o;699:297::-;;819:2;807:9;798:7;794:23;790:32;787:2;;;840:6;832;825:22;787:2;877:9;871:16;930:5;923:13;916:21;909:5;906:32;896:2;;957:6;949;942:22;896:2;985:5;777:219;-1:-1:-1;;;777:219:33:o;1001:194::-;;1124:2;1112:9;1103:7;1099:23;1095:32;1092:2;;;1145:6;1137;1130:22;1092:2;-1:-1:-1;1173:16:33;;1082:113;-1:-1:-1;1082:113:33:o;1200:203::-;-1:-1:-1;;;;;1364:32:33;;;;1346:51;;1334:2;1319:18;;1301:102::o;1408:367::-;-1:-1:-1;;;;;1693:32:33;;;;1675:51;;1757:2;1742:18;;1735:34;1663:2;1648:18;;1630:145::o;1780:352::-;1982:2;1964:21;;;2021:2;2001:18;;;1994:30;2060;2055:2;2040:18;;2033:58;2123:2;2108:18;;1954:178::o;2137:133::-;-1:-1:-1;;;;;2214:31:33;;2204:42;;2194:2;;2260:1;2257;2250:12;2194:2;2184:86;:::o;:::-;831:5420:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:15108:33",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:33",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "65:147:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "75:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "97:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "84:20:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "75:5:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "190:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "199:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "202:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "192:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "192:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "192:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "126:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "137:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "144:42:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "133:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "133:54:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "123:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "123:65:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "116:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "116:73:33"
                              },
                              "nodeType": "YulIf",
                              "src": "113:2:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "44:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "55:5:33",
                            "type": ""
                          }
                        ],
                        "src": "14:198:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "307:314:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "356:30:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "arrayPos",
                                          "nodeType": "YulIdentifier",
                                          "src": "365:8:33"
                                        },
                                        {
                                          "name": "arrayPos",
                                          "nodeType": "YulIdentifier",
                                          "src": "375:8:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "358:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "358:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "358:26:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "335:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "343:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "331:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "331:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "350:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "327:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "327:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "320:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "320:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "317:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "395:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "418:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "405:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "405:20:33"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "395:6:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "468:30:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "arrayPos",
                                          "nodeType": "YulIdentifier",
                                          "src": "477:8:33"
                                        },
                                        {
                                          "name": "arrayPos",
                                          "nodeType": "YulIdentifier",
                                          "src": "487:8:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "470:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "470:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "470:26:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "440:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "448:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "437:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "437:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "434:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "507:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "523:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "531:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "519:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "519:17:33"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "507:8:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "599:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "608:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "611:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "601:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "601:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "601:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "559:6:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "571:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "579:4:33",
                                                "type": "",
                                                "value": "0x20"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "567:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "567:17:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "555:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "555:30:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "587:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "551:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "551:41:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "594:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "548:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "548:50:33"
                              },
                              "nodeType": "YulIf",
                              "src": "545:2:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "270:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "278:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "286:8:33",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "296:6:33",
                            "type": ""
                          }
                        ],
                        "src": "217:404:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "696:846:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "745:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "754:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "761:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "747:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "747:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "747:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "724:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "732:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "720:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "720:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "739:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "716:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "716:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "709:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "709:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "706:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "778:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "805:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "792:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "792:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "782:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "821:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "831:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "825:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "876:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "878:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "878:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "878:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "864:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "872:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "861:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "861:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "858:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "898:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "908:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "902:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "921:25:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "935:6:33"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "943:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "931:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "931:15:33"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "925:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "955:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "975:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "969:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "969:9:33"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "959:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "987:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1013:6:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "1021:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1009:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1009:15:33"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1026:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1005:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1005:24:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "991:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1088:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "1090:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1090:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1090:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1047:10:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1059:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1044:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1044:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1067:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1079:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1064:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1064:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1041:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1041:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1038:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1117:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1121:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1110:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1110:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1110:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1141:15:33",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1150:6:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1141:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1165:17:33",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1176:6:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "1169:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1198:6:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1206:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1191:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1191:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1191:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1222:22:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1233:6:33"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1241:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1229:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1229:15:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "1222:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1253:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1268:6:33"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1276:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1264:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1264:15:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "1257:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1325:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1334:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1337:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1327:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1327:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1327:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1302:6:33"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "1310:2:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1298:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1298:15:33"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1315:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1294:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1294:24:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1320:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1291:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1291:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1288:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1350:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1359:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "1354:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1418:118:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1439:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "1457:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "1444:12:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1444:17:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "1432:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1432:30:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1432:30:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1475:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "1486:3:33"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "1491:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1482:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1482:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "1475:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1507:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "1518:3:33"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "1523:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1514:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1514:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "1507:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "1380:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1383:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1377:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1377:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "1391:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1393:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "1402:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1405:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "1398:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1398:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "1393:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "1373:3:33",
                                "statements": []
                              },
                              "src": "1369:167:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "670:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "678:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "686:5:33",
                            "type": ""
                          }
                        ],
                        "src": "626:916:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1597:171:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1607:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1629:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1616:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1616:20:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1607:5:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1746:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1755:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1758:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1748:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1748:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1748:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1658:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "1669:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1676:66:33",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1665:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1665:78:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1655:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1655:89:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1648:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1648:97:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1645:2:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1576:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1587:5:33",
                            "type": ""
                          }
                        ],
                        "src": "1547:221:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1847:303:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1896:30:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "arrayPos",
                                          "nodeType": "YulIdentifier",
                                          "src": "1905:8:33"
                                        },
                                        {
                                          "name": "arrayPos",
                                          "nodeType": "YulIdentifier",
                                          "src": "1915:8:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1898:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1898:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1898:26:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1875:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1883:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1871:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1871:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1890:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1867:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1867:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1860:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1860:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1857:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1935:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1958:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1945:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1945:20:33"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1935:6:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2008:30:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "arrayPos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2017:8:33"
                                        },
                                        {
                                          "name": "arrayPos",
                                          "nodeType": "YulIdentifier",
                                          "src": "2027:8:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2010:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2010:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2010:26:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1980:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1988:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1977:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1977:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1974:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2047:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2063:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2071:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2059:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2059:17:33"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "2047:8:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2128:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2137:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2140:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2130:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2130:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2130:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2099:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "2107:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2095:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2095:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2116:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2091:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2091:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "2123:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2088:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2088:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2085:2:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1810:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1818:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "1826:8:33",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1836:6:33",
                            "type": ""
                          }
                        ],
                        "src": "1773:377:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2382:1041:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2429:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2438:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2446:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2431:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2431:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2431:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2403:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2412:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2399:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2399:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2424:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2395:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2395:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2392:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2464:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2495:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2474:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2474:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2464:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2514:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2549:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2560:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2545:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2545:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2524:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2524:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2514:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2573:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2604:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2615:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2600:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2600:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2587:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2587:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2577:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2628:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2638:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2632:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2683:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2692:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2700:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2685:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2685:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2685:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2671:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2679:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2668:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2668:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2665:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2718:102:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2792:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2803:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2788:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2788:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2812:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "2744:43:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2744:76:33"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2722:8:33",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2732:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2829:18:33",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "2839:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2829:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2856:18:33",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "2866:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2856:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2883:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2916:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2927:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2912:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2912:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2899:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2899:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2887:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2960:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2969:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2977:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2962:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2962:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2962:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2946:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2956:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2943:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2943:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2940:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2995:104:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "3080:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3091:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "3021:43:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3021:78:33"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2999:8:33",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3009:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3108:18:33",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "3118:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3108:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3135:18:33",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "3145:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "3135:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3162:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3195:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3206:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3191:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3191:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3178:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3178:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "3166:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3240:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value6",
                                          "nodeType": "YulIdentifier",
                                          "src": "3249:6:33"
                                        },
                                        {
                                          "name": "value6",
                                          "nodeType": "YulIdentifier",
                                          "src": "3257:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3242:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3242:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3242:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "3226:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3236:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3223:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3223:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3220:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3275:88:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3333:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "3344:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3329:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3329:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3355:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "3301:27:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3301:62:33"
                              },
                              "variables": [
                                {
                                  "name": "value6_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3279:8:33",
                                  "type": ""
                                },
                                {
                                  "name": "value7_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3289:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3372:18:33",
                              "value": {
                                "name": "value6_1",
                                "nodeType": "YulIdentifier",
                                "src": "3382:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "3372:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3399:18:33",
                              "value": {
                                "name": "value7_1",
                                "nodeType": "YulIdentifier",
                                "src": "3409:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "3399:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2292:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2303:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2315:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2323:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2331:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2339:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2347:6:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "2355:6:33",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "2363:6:33",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "2371:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2155:1268:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3585:564:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3632:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3641:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3649:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3634:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3634:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3634:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3606:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3615:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3602:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3602:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3627:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3598:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3598:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3595:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3667:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3698:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3677:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3677:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3667:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3717:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3752:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3763:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3748:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3748:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3727:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3727:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3717:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3776:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3803:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3814:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3799:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3799:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3786:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3786:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3776:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3827:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3854:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3865:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3850:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3850:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3837:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3837:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3827:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3878:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3909:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3920:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3905:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3905:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3892:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3892:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3882:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3968:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3977:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3985:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3970:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3970:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3970:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3940:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3948:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3937:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3937:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3934:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4003:86:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4061:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4072:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4057:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4057:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4081:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "4029:27:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4029:60:33"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4007:8:33",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4017:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4098:18:33",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "4108:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4098:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4125:18:33",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "4135:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "4125:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3511:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3522:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3534:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3542:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3550:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3558:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3566:6:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3574:6:33",
                            "type": ""
                          }
                        ],
                        "src": "3428:721:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4232:219:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4278:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4287:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4295:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4280:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4280:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4280:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4253:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4262:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4249:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4249:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4274:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4245:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4245:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4242:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4313:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4332:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4326:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4326:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4317:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4395:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4404:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4412:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4397:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4397:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4397:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4364:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "4385:5:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "4378:6:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4378:13:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "4371:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4371:21:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4361:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4361:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4354:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4354:40:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4351:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4430:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4440:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4430:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4198:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4209:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4221:6:33",
                            "type": ""
                          }
                        ],
                        "src": "4154:297:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4572:1093:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4618:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4627:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4635:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4620:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4620:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4620:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4593:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4602:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4589:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4589:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4614:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4585:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4585:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4582:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4653:40:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4683:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4663:19:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4663:30:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4653:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4702:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4733:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4744:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4729:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4729:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4716:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4716:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4706:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4757:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4767:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4761:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4812:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4821:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4829:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4814:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4814:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4814:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4800:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4808:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4797:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4797:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4794:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4847:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4872:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4857:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4857:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4851:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4919:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4928:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4936:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4921:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4921:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4921:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4899:7:33"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4908:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4895:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4895:16:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4913:4:33",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4891:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4891:27:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4888:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4954:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4974:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4968:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4968:9:33"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4958:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4986:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5008:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5016:4:33",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5004:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5004:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4990:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5080:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "5082:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5082:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5082:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5039:10:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5036:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5036:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5059:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5071:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5056:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5056:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "5033:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5033:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5030:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5109:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5113:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5102:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5102:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5102:22:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "5140:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5169:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_address",
                                      "nodeType": "YulIdentifier",
                                      "src": "5148:20:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5148:24:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5133:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5133:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5133:40:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5182:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5215:2:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5219:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5211:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5211:11:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5198:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5198:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5186:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5252:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5261:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5269:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5254:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5254:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5254:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5238:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5248:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5235:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5235:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5232:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5298:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5306:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5294:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5294:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5350:2:33"
                                          },
                                          {
                                            "name": "offset_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "5354:8:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5346:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5346:17:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5365:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_array$_t_uint256_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "5311:34:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5311:62:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5287:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5287:87:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5287:87:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5383:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5416:2:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5420:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5412:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5412:11:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5399:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5399:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5387:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5453:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5462:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5470:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5455:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5455:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5455:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5439:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5449:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5436:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5436:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5433:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5499:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5507:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5495:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5495:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5551:2:33"
                                          },
                                          {
                                            "name": "offset_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5555:8:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5547:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5547:17:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5566:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_array$_t_uint256_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "5512:34:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5512:62:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5488:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5488:87:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5488:87:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5595:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5603:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5591:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5591:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "5625:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5629:2:33",
                                            "type": "",
                                            "value": "96"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5621:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5621:11:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "5608:12:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5608:25:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5584:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5584:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5584:50:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5643:16:33",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "5653:6:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5643:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4t_struct$_BuyTokensObj_$2091_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4530:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4541:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4553:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4561:6:33",
                            "type": ""
                          }
                        ],
                        "src": "4456:1209:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5787:693:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5797:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5811:7:33"
                                  },
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5820:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "5807:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5807:23:33"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5801:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5855:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5864:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5872:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5857:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5857:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5857:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5846:2:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5850:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5842:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5842:12:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5839:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5890:40:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5920:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes4",
                                  "nodeType": "YulIdentifier",
                                  "src": "5900:19:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5900:30:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5890:6:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6029:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6038:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6046:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6031:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6031:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6031:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5950:2:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5954:66:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5946:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5946:75:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6023:4:33",
                                    "type": "",
                                    "value": "0x60"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5942:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5942:86:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5939:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6064:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6084:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6078:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6078:9:33"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6068:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6096:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6118:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6126:4:33",
                                    "type": "",
                                    "value": "0x60"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6114:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6114:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6100:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6206:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "6208:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6208:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6208:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6149:10:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6161:18:33",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6146:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6146:34:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6185:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6197:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6182:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6182:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "6143:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6143:62:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6140:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6235:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6239:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6228:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6228:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6228:22:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6266:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6299:9:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6310:2:33",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6295:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6295:18:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_address",
                                      "nodeType": "YulIdentifier",
                                      "src": "6274:20:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6274:40:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6259:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6259:56:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6259:56:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6335:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6343:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6331:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6331:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6365:9:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6376:2:33",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6361:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6361:18:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6348:12:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6348:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6324:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6324:57:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6324:57:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6401:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6409:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6397:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6397:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6431:9:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6442:4:33",
                                            "type": "",
                                            "value": "0x60"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6427:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6427:20:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6414:12:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6414:34:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6390:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6390:59:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6390:59:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6458:16:33",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "6468:6:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6458:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4t_struct$_SellTokensObj_$2098_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5745:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5756:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5768:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5776:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5670:810:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6566:113:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6612:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6621:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6629:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6614:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6614:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6614:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6587:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6596:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6583:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6583:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6608:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6579:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6579:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6576:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6647:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6663:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6657:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6657:16:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6647:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6532:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6543:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6555:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6485:194:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6807:452:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6853:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6862:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6870:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6855:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6855:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6855:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6828:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6837:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6824:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6824:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6849:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6820:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6820:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6817:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6888:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6911:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6898:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6898:23:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6888:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6930:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6965:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6976:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6961:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6961:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6940:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6940:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6930:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6989:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7020:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7031:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7016:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7016:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7003:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7003:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6993:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7078:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7087:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7095:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7080:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7080:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7080:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7050:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7058:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7047:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7047:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7044:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7113:86:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7171:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7182:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7167:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7167:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7191:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "7139:27:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7139:60:33"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7117:8:33",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7127:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7208:18:33",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "7218:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "7208:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7235:18:33",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "7245:8:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "7235:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_addresst_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6749:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6760:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6772:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6780:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6788:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6796:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6684:575:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7348:332:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7365:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7370:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7358:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7358:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7358:19:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7468:20:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "end",
                                          "nodeType": "YulIdentifier",
                                          "src": "7477:3:33"
                                        },
                                        {
                                          "name": "end",
                                          "nodeType": "YulIdentifier",
                                          "src": "7482:3:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7470:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7470:16:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7470:16:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7392:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7400:66:33",
                                    "type": "",
                                    "value": "0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7389:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7389:78:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7386:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7497:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7517:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7525:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "7513:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7513:17:33"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7501:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7556:3:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7561:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7552:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7552:14:33"
                                  },
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "7568:5:33"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7575:8:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "7539:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7539:45:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7539:45:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7593:39:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "7611:3:33"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7616:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7607:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7607:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7627:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7603:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7603:29:33"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7597:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7648:2:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "7652:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7641:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7641:15:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7641:15:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7665:9:33",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "7672:2:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7665:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_t_array$_t_uint256_$dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "7317:5:33",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "7324:6:33",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7332:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7340:3:33",
                            "type": ""
                          }
                        ],
                        "src": "7264:416:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7752:376:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7762:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7782:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7776:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7776:12:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7766:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7804:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7809:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7797:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7797:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7797:19:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7825:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7835:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7829:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7848:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "7859:3:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7864:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7855:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7855:12:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "7848:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7876:28:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7894:5:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7901:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7890:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7890:14:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7880:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7913:12:33",
                              "value": {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "7922:3:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7917:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7983:120:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "8004:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "8015:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "8009:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8009:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7997:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7997:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7997:26:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8036:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "8047:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "8052:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8043:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8043:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "8036:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8068:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "8082:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "8090:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8078:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8078:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8068:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7945:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7948:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7942:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7942:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7956:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7958:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7967:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7970:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7963:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7963:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7958:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7938:3:33",
                                "statements": []
                              },
                              "src": "7934:169:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8112:10:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "8119:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "8112:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_t_array$_t_uint256_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7729:5:33",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7736:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7744:3:33",
                            "type": ""
                          }
                        ],
                        "src": "7685:443:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8201:261:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "8218:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8223:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8211:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8211:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8211:19:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "8256:3:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8261:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8252:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8252:14:33"
                                  },
                                  {
                                    "name": "start",
                                    "nodeType": "YulIdentifier",
                                    "src": "8268:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8275:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "8239:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8239:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8239:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "8306:3:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "8311:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8302:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8302:16:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8320:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8298:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8298:27:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "8327:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8291:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8291:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8291:40:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8340:116:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "8355:3:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "8368:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8376:2:33",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "8364:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8364:15:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8381:66:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8360:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8360:88:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8351:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8351:98:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8451:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8347:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8347:109:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "8340:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_t_bytes_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "start",
                            "nodeType": "YulTypedName",
                            "src": "8170:5:33",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "8177:6:33",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "8185:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8193:3:33",
                            "type": ""
                          }
                        ],
                        "src": "8133:329:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8568:125:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8578:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8590:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8601:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8586:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8586:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8578:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8620:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8635:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8643:42:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8631:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8631:55:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8613:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8613:74:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8613:74:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8537:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8548:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8559:4:33",
                            "type": ""
                          }
                        ],
                        "src": "8467:226:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8863:241:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8873:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8885:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8896:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8881:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8881:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "8873:4:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8908:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8918:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8912:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8976:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "8991:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8999:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "8987:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8987:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8969:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8969:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8969:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9023:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9034:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9019:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9019:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9043:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9051:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9039:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9039:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9012:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9012:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9012:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9075:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9086:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9071:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9071:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9091:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9064:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9064:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9064:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8816:9:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8827:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8835:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8843:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8854:4:33",
                            "type": ""
                          }
                        ],
                        "src": "8698:406:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9282:241:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9292:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9304:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9315:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9300:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9300:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9292:4:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9327:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9337:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9331:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9395:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9410:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9418:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9406:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9406:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9388:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9388:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9388:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9442:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9453:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9438:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9438:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9462:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9470:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9458:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9458:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9431:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9431:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9431:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9494:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9505:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9490:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9490:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9510:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9483:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9483:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9483:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_payable_t_uint256__to_t_address_t_address_payable_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9235:9:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9246:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9254:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9262:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9273:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9109:414:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9889:583:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9899:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9909:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9903:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9967:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "9982:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9990:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "9978:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9978:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9960:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9960:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9960:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10014:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10025:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10010:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10010:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10034:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10042:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10030:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10030:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10003:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10003:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10003:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10066:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10077:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10062:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10062:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10082:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10055:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10055:31:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10055:31:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10095:94:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10153:6:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "10161:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10173:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10184:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10169:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10169:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_array$_t_uint256_$dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "10109:43:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10109:80:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10099:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10209:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10220:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10205:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10205:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10229:6:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10237:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10225:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10225:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10198:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10198:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10198:50:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10257:81:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "10315:6:33"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "10323:6:33"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10331:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_array$_t_uint256_$dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "10271:43:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10271:67:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10261:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10358:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10369:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10354:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10354:19:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "10379:6:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10387:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10375:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10375:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10347:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10347:51:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10347:51:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10407:59:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value6",
                                    "nodeType": "YulIdentifier",
                                    "src": "10443:6:33"
                                  },
                                  {
                                    "name": "value7",
                                    "nodeType": "YulIdentifier",
                                    "src": "10451:6:33"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10459:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "10415:27:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10415:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10407:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr_t_bytes_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9802:9:33",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "9813:6:33",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "9821:6:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "9829:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "9837:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9845:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9853:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9861:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9869:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9880:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9528:944:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10862:542:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10872:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10882:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10876:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10940:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "10955:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "10963:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "10951:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10951:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10933:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10933:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10933:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10987:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10998:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10983:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10983:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11007:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11015:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11003:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11003:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10976:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10976:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10976:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11039:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11050:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11035:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11035:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11055:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11028:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11028:31:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11028:31:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11068:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11117:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11129:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11140:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11125:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11125:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "11082:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11082:63:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11072:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11165:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11176:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11161:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11161:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11185:6:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11193:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11181:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11181:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11154:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11154:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11154:50:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11213:64:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "11262:6:33"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11270:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "11227:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11227:50:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11217:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11297:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11308:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11293:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11293:19:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11318:6:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11326:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11314:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11314:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11286:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11286:51:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11286:51:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11353:6:33"
                                  },
                                  {
                                    "name": "tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "11361:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11346:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11346:20:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11346:20:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11375:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11387:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11395:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11383:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11383:15:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11375:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10807:9:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10818:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10826:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10834:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10842:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10853:4:33",
                            "type": ""
                          }
                        ],
                        "src": "10477:927:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11566:241:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11576:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11588:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11599:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11584:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11584:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "11576:4:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11611:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11621:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11615:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11679:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "11694:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11702:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11690:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11690:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11672:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11672:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11672:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11726:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11737:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11722:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11722:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11746:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11754:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "11742:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11742:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11715:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11715:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11715:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11778:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11789:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11774:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11774:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11794:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11767:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11767:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11767:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11519:9:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "11530:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11538:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11546:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "11557:4:33",
                            "type": ""
                          }
                        ],
                        "src": "11409:398:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12053:371:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12063:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12073:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12067:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12131:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12146:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12154:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12142:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12142:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12124:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12124:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12124:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12178:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12189:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12174:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12174:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12198:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12206:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12194:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12194:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12167:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12167:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12167:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12230:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12241:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12226:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12226:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "12246:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12219:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12219:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12219:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12273:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12284:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12269:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12269:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "12289:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12262:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12262:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12262:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12316:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12327:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12312:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12312:19:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12333:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12305:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12305:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12305:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12346:72:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "12382:6:33"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "12390:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12402:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12413:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12398:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12398:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_t_bytes_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "12354:27:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12354:64:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12346:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11982:9:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "11993:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "12001:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12009:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12017:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12025:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12033:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12044:4:33",
                            "type": ""
                          }
                        ],
                        "src": "11812:612:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12558:168:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12568:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12580:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12591:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12576:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12576:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12568:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12610:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12625:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12633:42:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12621:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12621:55:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12603:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12603:74:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12603:74:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12697:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12708:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12693:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12693:18:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12713:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12686:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12686:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12686:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12519:9:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12530:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12538:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12549:4:33",
                            "type": ""
                          }
                        ],
                        "src": "12429:297:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12830:149:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "12840:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12852:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12863:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12848:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12848:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "12840:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12882:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12897:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12905:66:33",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12893:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12893:79:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12875:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12875:98:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12875:98:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12799:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12810:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "12821:4:33",
                            "type": ""
                          }
                        ],
                        "src": "12731:248:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13115:125:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "13125:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13137:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13148:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13133:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13133:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13125:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13167:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "13182:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13190:42:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "13178:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13178:55:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13160:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13160:74:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13160:74:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_contract$_IERC20Wrapper_$2837__to_t_address_payable__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13084:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13095:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13106:4:33",
                            "type": ""
                          }
                        ],
                        "src": "12984:256:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13419:308:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13436:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13447:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13429:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13429:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13429:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13470:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13481:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13466:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13466:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13486:2:33",
                                    "type": "",
                                    "value": "78"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13459:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13459:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13459:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13509:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13520:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13505:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13505:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13525:34:33",
                                    "type": "",
                                    "value": "WrapAndNiftyswap#onERC1155BatchR"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13498:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13498:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13498:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13580:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13591:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13576:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13576:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13596:34:33",
                                    "type": "",
                                    "value": "eceived: ORDER RECIPIENT MUST BE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13569:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13569:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13569:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13651:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13662:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13647:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13647:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "13668:16:33",
                                    "type": "",
                                    "value": " THIS CONTRACT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13640:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13640:45:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13640:45:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13694:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13706:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13717:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13702:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13702:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13694:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_000f9a6097ad9cb17f2473b618ac2adea983d83e6facafa1e1d63ac5fd985e97__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13396:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13410:4:33",
                            "type": ""
                          }
                        ],
                        "src": "13245:482:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13906:250:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13923:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13934:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13916:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13916:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13916:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13957:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13968:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13953:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13953:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13973:2:33",
                                    "type": "",
                                    "value": "60"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13946:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13946:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13946:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13996:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14007:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13992:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13992:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14012:34:33",
                                    "type": "",
                                    "value": "WrapAndNiftyswap#onERC1155Receiv"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13985:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13985:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13985:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14067:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14078:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14063:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14063:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14083:30:33",
                                    "type": "",
                                    "value": "ed: INVALID_ERC1155_RECEIVED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14056:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14056:58:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14056:58:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14123:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14135:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14146:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14131:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14131:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14123:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4b95ec467989556bcab6c71b721a33a3e8a5c6706201a934989da9cf2cf4084b__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13883:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13897:4:33",
                            "type": ""
                          }
                        ],
                        "src": "13732:424:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14335:295:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14352:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14363:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14345:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14345:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14345:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14386:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14397:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14382:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14382:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14402:2:33",
                                    "type": "",
                                    "value": "65"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14375:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14375:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14375:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14425:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14436:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14421:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14421:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14441:34:33",
                                    "type": "",
                                    "value": "WrapAndNiftyswap#onERC1155BatchR"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14414:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14414:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14414:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14496:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14507:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14492:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14492:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14512:34:33",
                                    "type": "",
                                    "value": "eceived: INVALID_ERC1155_RECEIVE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14485:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14485:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14485:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14567:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14578:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14563:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14563:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14584:3:33",
                                    "type": "",
                                    "value": "D"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14556:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14556:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14556:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14597:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14609:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14620:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14605:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14605:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14597:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_4c86d9d1f289c13e541fc5b0f4eb6c7834db5be146fa52dd046efb1e97d216dd__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14312:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14326:4:33",
                            "type": ""
                          }
                        ],
                        "src": "14161:469:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14809:297:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14826:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14837:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14819:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14819:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14819:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14860:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14871:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14856:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14856:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14876:2:33",
                                    "type": "",
                                    "value": "67"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14849:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14849:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14849:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14899:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14910:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14895:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14895:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14915:34:33",
                                    "type": "",
                                    "value": "WrapAndNiftyswap#wrapAndSwap: OR"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14888:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14888:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14888:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14970:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14981:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14966:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14966:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "14986:34:33",
                                    "type": "",
                                    "value": "DER RECIPIENT MUST BE THIS CONTR"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14959:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14959:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14959:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15041:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15052:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15037:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15037:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "15058:5:33",
                                    "type": "",
                                    "value": "ACT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15030:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15030:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15030:34:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15073:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15085:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15096:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15081:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15081:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15073:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_90ae4b83f1b6dd67a90498eb9b48546fb2b38469c3930dc79a0df702509f715d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14786:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14800:4:33",
                            "type": ""
                          }
                        ],
                        "src": "14635:471:33"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_t_array$_t_uint256_$dyn_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(arrayPos, arrayPos) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(arrayPos, arrayPos) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, mul(length, 0x20)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_t_array$_t_uint256_$dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        let _1 := 0xffffffffffffffff\n        if gt(length, _1) { invalid() }\n        let _2 := 0x20\n        let _3 := mul(length, _2)\n        let memPtr := mload(64)\n        let newFreePtr := add(add(memPtr, _3), _2)\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        array := memPtr\n        let dst := memPtr\n        mstore(memPtr, length)\n        dst := add(memPtr, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, _3), _2), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n    }\n    function abi_decode_t_bytes4(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(0, 0) }\n    }\n    function abi_decode_t_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(arrayPos, arrayPos) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(arrayPos, arrayPos) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_calldata_ptrt_array$_t_uint256_$dyn_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        let value2_1, value3_1 := abi_decode_t_array$_t_uint256_$dyn_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        let value4_1, value5_1 := abi_decode_t_array$_t_uint256_$dyn_calldata(add(headStart, offset_1), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value6, value6) }\n        let value6_1, value7_1 := abi_decode_t_bytes_calldata(add(headStart, offset_2), dataEnd)\n        value6 := value6_1\n        value7 := value7_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        let value4_1, value5_1 := abi_decode_t_bytes_calldata(add(headStart, offset), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4t_struct$_BuyTokensObj_$2091_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_bytes4(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 0x80) { revert(value1, value1) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x80)\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, abi_decode_t_address(_2))\n        let offset_1 := calldataload(add(_2, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        mstore(add(memPtr, 32), abi_decode_t_array$_t_uint256_$dyn(add(_2, offset_1), dataEnd))\n        let offset_2 := calldataload(add(_2, 64))\n        if gt(offset_2, _1) { revert(value1, value1) }\n        mstore(add(memPtr, 64), abi_decode_t_array$_t_uint256_$dyn(add(_2, offset_2), dataEnd))\n        mstore(add(memPtr, 96), calldataload(add(_2, 96)))\n        value1 := memPtr\n    }\n    function abi_decode_tuple_t_bytes4t_struct$_SellTokensObj_$2098_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        let _1 := sub(dataEnd, headStart)\n        if slt(_1, 128) { revert(value0, value0) }\n        value0 := abi_decode_t_bytes4(headStart)\n        if slt(add(_1, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x60) { revert(value1, value1) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x60)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, abi_decode_t_address(add(headStart, 32)))\n        mstore(add(memPtr, 32), calldataload(add(headStart, 64)))\n        mstore(add(memPtr, 64), calldataload(add(headStart, 0x60)))\n        value1 := memPtr\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(value2, value2) }\n        let value2_1, value3_1 := abi_decode_t_bytes_calldata(add(headStart, offset), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_encode_t_array$_t_uint256_$dyn_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        if gt(length, 0x07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) { revert(end, end) }\n        let length_1 := mul(length, 0x20)\n        calldatacopy(add(pos, 0x20), start, length_1)\n        let _1 := add(add(pos, length_1), 0x20)\n        mstore(_1, end)\n        end := _1\n    }\n    function abi_encode_t_array$_t_uint256_$dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := end\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_t_bytes_calldata(start, length, pos) -> end\n    {\n        mstore(pos, length)\n        calldatacopy(add(pos, 0x20), start, length)\n        mstore(add(add(pos, length), 0x20), end)\n        end := add(add(pos, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 0x20)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_payable_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_address_payable_t_uint256__to_t_address_t_address_payable_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_calldata_ptr_t_array$_t_uint256_$dyn_calldata_ptr_t_bytes_calldata_ptr__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_t_array$_t_uint256_$dyn_calldata(value2, value3, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_t_array$_t_uint256_$dyn_calldata(value4, value5, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_t_bytes_calldata(value6, value7, tail_2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_array$_t_uint256_$dyn_memory_ptr_t_array$_t_uint256_$dyn_memory_ptr_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 160)\n        let tail_1 := abi_encode_t_array$_t_uint256_$dyn(value2, add(headStart, 160))\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_t_array$_t_uint256_$dyn(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        mstore(tail_2, tail)\n        tail := add(tail_2, 32)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_bytes_calldata_ptr__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        tail := abi_encode_t_bytes_calldata(value4, value5, add(headStart, 160))\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_encode_tuple_t_contract$_IERC20Wrapper_$2837__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_000f9a6097ad9cb17f2473b618ac2adea983d83e6facafa1e1d63ac5fd985e97__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 78)\n        mstore(add(headStart, 64), \"WrapAndNiftyswap#onERC1155BatchR\")\n        mstore(add(headStart, 96), \"eceived: ORDER RECIPIENT MUST BE\")\n        mstore(add(headStart, 128), \" THIS CONTRACT\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_4b95ec467989556bcab6c71b721a33a3e8a5c6706201a934989da9cf2cf4084b__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 60)\n        mstore(add(headStart, 64), \"WrapAndNiftyswap#onERC1155Receiv\")\n        mstore(add(headStart, 96), \"ed: INVALID_ERC1155_RECEIVED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4c86d9d1f289c13e541fc5b0f4eb6c7834db5be146fa52dd046efb1e97d216dd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 65)\n        mstore(add(headStart, 64), \"WrapAndNiftyswap#onERC1155BatchR\")\n        mstore(add(headStart, 96), \"eceived: INVALID_ERC1155_RECEIVE\")\n        mstore(add(headStart, 128), \"D\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_90ae4b83f1b6dd67a90498eb9b48546fb2b38469c3930dc79a0df702509f715d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 67)\n        mstore(add(headStart, 64), \"WrapAndNiftyswap#wrapAndSwap: OR\")\n        mstore(add(headStart, 96), \"DER RECIPIENT MUST BE THIS CONTR\")\n        mstore(add(headStart, 128), \"ACT\")\n        tail := add(headStart, 160)\n    }\n}",
                  "id": 33,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "2343": [
                  {
                    "length": 32,
                    "start": 700
                  },
                  {
                    "length": 32,
                    "start": 943
                  },
                  {
                    "length": 32,
                    "start": 1221
                  },
                  {
                    "length": 32,
                    "start": 1457
                  },
                  {
                    "length": 32,
                    "start": 1820
                  },
                  {
                    "length": 32,
                    "start": 2446
                  },
                  {
                    "length": 32,
                    "start": 2682
                  },
                  {
                    "length": 32,
                    "start": 3073
                  },
                  {
                    "length": 32,
                    "start": 3205
                  }
                ],
                "2345": [
                  {
                    "length": 32,
                    "start": 990
                  },
                  {
                    "length": 32,
                    "start": 2243
                  },
                  {
                    "length": 32,
                    "start": 3109
                  }
                ],
                "2347": [
                  {
                    "length": 32,
                    "start": 258
                  },
                  {
                    "length": 32,
                    "start": 499
                  },
                  {
                    "length": 32,
                    "start": 745
                  },
                  {
                    "length": 32,
                    "start": 1502
                  },
                  {
                    "length": 32,
                    "start": 2727
                  },
                  {
                    "length": 32,
                    "start": 2880
                  }
                ],
                "2349": [
                  {
                    "length": 32,
                    "start": 1668
                  },
                  {
                    "length": 32,
                    "start": 1922
                  },
                  {
                    "length": 32,
                    "start": 3145
                  }
                ],
                "2351": [
                  {
                    "length": 32,
                    "start": 1024
                  },
                  {
                    "length": 32,
                    "start": 1268
                  },
                  {
                    "length": 32,
                    "start": 2493
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c8063c5e3dfd81161005b578063c5e3dfd8146100d5578063d2f7265a146100dd578063d56022d7146100e5578063f23a6e61146100ed5761007d565b8063785e9e8614610082578063a874d5b6146100a0578063bc197c81146100b5575b600080fd5b61008a610100565b60405161009791906112e6565b60405180910390f35b6100b36100ae3660046111bf565b610124565b005b6100c86100c3366004610eee565b6106f7565b604051610097919061147a565b61008a610bff565b61008a610c23565b61008a610c47565b6100c86100fb366004610fa5565b610c6b565b7f000000000000000000000000000000000000000000000000000000000000000081565b61012c610d08565b61013882840184611042565b805190925073ffffffffffffffffffffffffffffffffffffffff16159050806101775750805173ffffffffffffffffffffffffffffffffffffffff1630145b6101b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad9061160a565b60405180910390fd5b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906323b872dd9061022c90339030908a90600401611307565b602060405180830381600087803b15801561024657600080fd5b505af115801561025a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061027e919061101b565b506040517f8340f54900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690638340f54990610315907f00000000000000000000000000000000000000000000000000000000000000009030908a90600401611307565b600060405180830381600087803b15801561032f57600080fd5b505af1158015610343573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905550506040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063f242432a9061042e9030907f0000000000000000000000000000000000000000000000000000000000000000907f0000000000000000000000000000000000000000000000000000000000000000908b908a908a9060040161140e565b600060405180830381600087803b15801561044857600080fd5b505af115801561045c573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681556040517efdd58e00000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e9061051c9030907f000000000000000000000000000000000000000000000000000000000000000090600401611454565b60206040518083038186803b15801561053457600080fd5b505afa158015610548573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056c91906111a7565b9050801561063d576040517fd9caed1200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d9caed129061060a907f00000000000000000000000000000000000000000000000000000000000000009089908690600401611307565b600060405180830381600087803b15801561062457600080fd5b505af1158015610638573d6000803e3d6000fd5b505050505b602082015160408084015190517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692632eb2c2d6926106bd9230928b9290916004016113a9565b600060405180830381600087803b1580156106d757600080fd5b505af11580156106eb573d6000803e3d6000fd5b50505050505050505050565b6000805460ff168061073e57503373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016145b1561076a57507fbc197c8100000000000000000000000000000000000000000000000000000000610bf3565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad90611587565b6107e1610d46565b6107ed8385018561110c565b805190925073ffffffffffffffffffffffffffffffffffffffff161590508061082c5750805173ffffffffffffffffffffffffffffffffffffffff1630145b610862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad906114a7565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2eb2c2d60000000000000000000000000000000000000000000000000000000081523390632eb2c2d6906108f79030907f0000000000000000000000000000000000000000000000000000000000000000908d908d908d908d908d908d90600401611338565b600060405180830381600087803b15801561091157600080fd5b505af1158015610925573d6000803e3d6000fd5b5050600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001681556040517efdd58e00000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016915062fdd58e906109e59030907f000000000000000000000000000000000000000000000000000000000000000090600401611454565b60206040518083038186803b1580156109fd57600080fd5b505afa158015610a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3591906111a7565b90508015610bcd576040517fd9caed1200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d9caed1290610ad3907f00000000000000000000000000000000000000000000000000000000000000009030908690600401611307565b600060405180830381600087803b158015610aed57600080fd5b505af1158015610b01573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016925063a9059cbb9150610b79908d908590600401611454565b602060405180830381600087803b158015610b9357600080fd5b505af1158015610ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bcb919061101b565b505b507fbc197c81000000000000000000000000000000000000000000000000000000009150505b98975050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60003373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610cdc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101ad9061152a565b507ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001600081525090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081525090565b803573ffffffffffffffffffffffffffffffffffffffff81168114610da157600080fd5b919050565b60008083601f840112610db7578182fd5b50813567ffffffffffffffff811115610dce578182fd5b6020830191508360208083028501011115610de857600080fd5b9250929050565b600082601f830112610dff578081fd5b813567ffffffffffffffff80821115610e1457fe5b602080830260405182828201018181108582111715610e2f57fe5b604052848152945081850192508582018187018301881015610e5057600080fd5b600091505b84821015610e73578035845292820192600191909101908201610e55565b505050505092915050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114610da157600080fd5b60008083601f840112610ebf578182fd5b50813567ffffffffffffffff811115610ed6578182fd5b602083019150836020828501011115610de857600080fd5b60008060008060008060008060a0898b031215610f09578384fd5b610f1289610d7d565b9750610f2060208a01610d7d565b9650604089013567ffffffffffffffff80821115610f3c578586fd5b610f488c838d01610da6565b909850965060608b0135915080821115610f60578586fd5b610f6c8c838d01610da6565b909650945060808b0135915080821115610f84578384fd5b50610f918b828c01610eae565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215610fbd578182fd5b610fc687610d7d565b9550610fd460208801610d7d565b94506040870135935060608701359250608087013567ffffffffffffffff811115610ffd578283fd5b61100989828a01610eae565b979a9699509497509295939492505050565b60006020828403121561102c578081fd5b8151801515811461103b578182fd5b9392505050565b60008060408385031215611054578182fd5b61105d83610e7e565b9150602083013567ffffffffffffffff80821115611079578283fd5b908401906080828703121561108c578283fd5b6040516080810181811083821117156110a157fe5b6040526110ad83610d7d565b81526020830135828111156110c0578485fd5b6110cc88828601610def565b6020830152506040830135828111156110e3578485fd5b6110ef88828601610def565b604083015250606083013560608201528093505050509250929050565b600080828403608081121561111f578283fd5b61112884610e7e565b925060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215611159578182fd5b506040516060810181811067ffffffffffffffff8211171561117757fe5b60405261118660208501610d7d565b81526040840135602082015260608401356040820152809150509250929050565b6000602082840312156111b8578081fd5b5051919050565b600080600080606085870312156111d4578384fd5b843593506111e460208601610d7d565b9250604085013567ffffffffffffffff8111156111ff578283fd5b61120b87828801610eae565b95989497509550505050565b60008284527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611248578081fd5b6020830280836020870137939093016020019283525090919050565b6000815180845260208085019450808401835b8381101561129357815187529582019590820190600101611277565b509495945050505050565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b600073ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525060a0604083015261137260a08301888a611217565b8281036060840152611385818789611217565b9050828103608084015261139a81858761129e565b9b9a5050505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060a060408301526113e260a0830185611264565b82810360608401526113f48185611264565b838103608090940193909352508152602001949350505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a06080830152610bf360a08301848661129e565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252604e908201527f57726170416e644e6966747973776170236f6e4552433131353542617463685260408201527f656365697665643a204f5244455220524543495049454e54204d55535420424560608201527f205448495320434f4e5452414354000000000000000000000000000000000000608082015260a00190565b6020808252603c908201527f57726170416e644e6966747973776170236f6e4552433131353552656365697660408201527f65643a20494e56414c49445f455243313135355f524543454956454400000000606082015260800190565b60208082526041908201527f57726170416e644e6966747973776170236f6e4552433131353542617463685260408201527f656365697665643a20494e56414c49445f455243313135355f5245434549564560608201527f4400000000000000000000000000000000000000000000000000000000000000608082015260a00190565b60208082526043908201527f57726170416e644e69667479737761702377726170416e64537761703a204f5260408201527f44455220524543495049454e54204d555354204245205448495320434f4e545260608201527f4143540000000000000000000000000000000000000000000000000000000000608082015260a0019056fea2646970667358221220e0ba31386d0d5d1d4991248dd9baf24680fdeb8d88c41efac70e198e627f05ff64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xC5E3DFD8 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xC5E3DFD8 EQ PUSH2 0xD5 JUMPI DUP1 PUSH4 0xD2F7265A EQ PUSH2 0xDD JUMPI DUP1 PUSH4 0xD56022D7 EQ PUSH2 0xE5 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0xED JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x785E9E86 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0xA874D5B6 EQ PUSH2 0xA0 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0xB5 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x100 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x12E6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0xAE CALLDATASIZE PUSH1 0x4 PUSH2 0x11BF JUMP JUMPDEST PUSH2 0x124 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0xEEE JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP2 SWAP1 PUSH2 0x147A JUMP JUMPDEST PUSH2 0x8A PUSH2 0xBFF JUMP JUMPDEST PUSH2 0x8A PUSH2 0xC23 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xC47 JUMP JUMPDEST PUSH2 0xC8 PUSH2 0xFB CALLDATASIZE PUSH1 0x4 PUSH2 0xFA5 JUMP JUMPDEST PUSH2 0xC6B JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH2 0x12C PUSH2 0xD08 JUMP JUMPDEST PUSH2 0x138 DUP3 DUP5 ADD DUP5 PUSH2 0x1042 JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO SWAP1 POP DUP1 PUSH2 0x177 JUMPI POP DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS EQ JUMPDEST PUSH2 0x1B6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0x160A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x22C SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x246 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x25A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x27E SWAP2 SWAP1 PUSH2 0x101B JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x8340F54900000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x8340F549 SWAP1 PUSH2 0x315 SWAP1 PUSH32 0x0 SWAP1 ADDRESS SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x32F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x343 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE POP POP PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xF242432A SWAP1 PUSH2 0x42E SWAP1 ADDRESS SWAP1 PUSH32 0x0 SWAP1 PUSH32 0x0 SWAP1 DUP12 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x140E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x448 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x45C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 POP PUSH3 0xFDD58E SWAP1 PUSH2 0x51C SWAP1 ADDRESS SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1454 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x534 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x548 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x56C SWAP2 SWAP1 PUSH2 0x11A7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x63D JUMPI PUSH1 0x40 MLOAD PUSH32 0xD9CAED1200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD9CAED12 SWAP1 PUSH2 0x60A SWAP1 PUSH32 0x0 SWAP1 DUP10 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x624 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x638 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 DUP1 DUP5 ADD MLOAD SWAP1 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 PUSH4 0x2EB2C2D6 SWAP3 PUSH2 0x6BD SWAP3 ADDRESS SWAP3 DUP12 SWAP3 SWAP1 SWAP2 PUSH1 0x4 ADD PUSH2 0x13A9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6EB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0xFF AND DUP1 PUSH2 0x73E JUMPI POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ JUMPDEST ISZERO PUSH2 0x76A JUMPI POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 PUSH2 0xBF3 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0x1587 JUMP JUMPDEST PUSH2 0x7E1 PUSH2 0xD46 JUMP JUMPDEST PUSH2 0x7ED DUP4 DUP6 ADD DUP6 PUSH2 0x110C JUMP JUMPDEST DUP1 MLOAD SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO SWAP1 POP DUP1 PUSH2 0x82C JUMPI POP DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ADDRESS EQ JUMPDEST PUSH2 0x862 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0x14A7 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND PUSH1 0x1 OR SWAP1 SSTORE PUSH1 0x40 MLOAD PUSH32 0x2EB2C2D600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE CALLER SWAP1 PUSH4 0x2EB2C2D6 SWAP1 PUSH2 0x8F7 SWAP1 ADDRESS SWAP1 PUSH32 0x0 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH1 0x4 ADD PUSH2 0x1338 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x925 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH31 0xFDD58E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP3 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP2 POP PUSH3 0xFDD58E SWAP1 PUSH2 0x9E5 SWAP1 ADDRESS SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x4 ADD PUSH2 0x1454 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x9FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA11 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xA35 SWAP2 SWAP1 PUSH2 0x11A7 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0xBCD JUMPI PUSH1 0x40 MLOAD PUSH32 0xD9CAED1200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0xD9CAED12 SWAP1 PUSH2 0xAD3 SWAP1 PUSH32 0x0 SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x1307 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xAED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xB01 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP3 POP PUSH4 0xA9059CBB SWAP2 POP PUSH2 0xB79 SWAP1 DUP14 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x1454 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xB93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBA7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xBCB SWAP2 SWAP1 PUSH2 0x101B JUMP JUMPDEST POP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP2 POP POP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0xCDC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1AD SWAP1 PUSH2 0x152A JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xDA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xDB7 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xDCE JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0xDE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xDFF JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xE14 JUMPI INVALID JUMPDEST PUSH1 0x20 DUP1 DUP4 MUL PUSH1 0x40 MLOAD DUP3 DUP3 DUP3 ADD ADD DUP2 DUP2 LT DUP6 DUP3 GT OR ISZERO PUSH2 0xE2F JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE DUP5 DUP2 MSTORE SWAP5 POP DUP2 DUP6 ADD SWAP3 POP DUP6 DUP3 ADD DUP2 DUP8 ADD DUP4 ADD DUP9 LT ISZERO PUSH2 0xE50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 SWAP2 POP JUMPDEST DUP5 DUP3 LT ISZERO PUSH2 0xE73 JUMPI DUP1 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD SWAP1 DUP3 ADD PUSH2 0xE55 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0xDA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xEBF JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xED6 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xDE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0xF09 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xF12 DUP10 PUSH2 0xD7D JUMP JUMPDEST SWAP8 POP PUSH2 0xF20 PUSH1 0x20 DUP11 ADD PUSH2 0xD7D JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xF3C JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0xF48 DUP13 DUP4 DUP14 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x60 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF60 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0xF6C DUP13 DUP4 DUP14 ADD PUSH2 0xDA6 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF84 JUMPI DUP4 DUP5 REVERT JUMPDEST POP PUSH2 0xF91 DUP12 DUP3 DUP13 ADD PUSH2 0xEAE JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 POP SWAP5 SWAP8 SWAP4 SWAP7 SWAP3 SWAP6 SWAP5 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0xFBD JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xFC6 DUP8 PUSH2 0xD7D JUMP JUMPDEST SWAP6 POP PUSH2 0xFD4 PUSH1 0x20 DUP9 ADD PUSH2 0xD7D JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xFFD JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1009 DUP10 DUP3 DUP11 ADD PUSH2 0xEAE JUMP JUMPDEST SWAP8 SWAP11 SWAP7 SWAP10 POP SWAP5 SWAP8 POP SWAP3 SWAP6 SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x102C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x103B JUMPI DUP2 DUP3 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1054 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x105D DUP4 PUSH2 0xE7E JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1079 JUMPI DUP3 DUP4 REVERT JUMPDEST SWAP1 DUP5 ADD SWAP1 PUSH1 0x80 DUP3 DUP8 SUB SLT ISZERO PUSH2 0x108C JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD DUP2 DUP2 LT DUP4 DUP3 GT OR ISZERO PUSH2 0x10A1 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x10AD DUP4 PUSH2 0xD7D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x10C0 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x10CC DUP9 DUP3 DUP7 ADD PUSH2 0xDEF JUMP JUMPDEST PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0x10E3 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x10EF DUP9 DUP3 DUP7 ADD PUSH2 0xDEF JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MSTORE POP PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE DUP1 SWAP4 POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0x80 DUP2 SLT ISZERO PUSH2 0x111F JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1128 DUP5 PUSH2 0xE7E JUMP JUMPDEST SWAP3 POP PUSH1 0x60 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD SLT ISZERO PUSH2 0x1159 JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x60 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x1177 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x1186 PUSH1 0x20 DUP6 ADD PUSH2 0xD7D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x11B8 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x11D4 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH2 0x11E4 PUSH1 0x20 DUP7 ADD PUSH2 0xD7D JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x11FF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x120B DUP8 DUP3 DUP9 ADD PUSH2 0xEAE JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO PUSH2 0x1248 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x20 DUP4 MUL DUP1 DUP4 PUSH1 0x20 DUP8 ADD CALLDATACOPY SWAP4 SWAP1 SWAP4 ADD PUSH1 0x20 ADD SWAP3 DUP4 MSTORE POP SWAP1 SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD DUP4 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1293 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1277 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MSTORE DUP3 DUP3 PUSH1 0x20 DUP7 ADD CALLDATACOPY DUP1 PUSH1 0x20 DUP5 DUP7 ADD ADD MSTORE PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP6 ADD AND DUP6 ADD ADD SWAP1 POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP12 AND DUP4 MSTORE DUP1 DUP11 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x1372 PUSH1 0xA0 DUP4 ADD DUP9 DUP11 PUSH2 0x1217 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x1385 DUP2 DUP8 DUP10 PUSH2 0x1217 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x139A DUP2 DUP6 DUP8 PUSH2 0x129E JUMP JUMPDEST SWAP12 SWAP11 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND DUP4 MSTORE DUP1 DUP7 AND PUSH1 0x20 DUP5 ADD MSTORE POP PUSH1 0xA0 PUSH1 0x40 DUP4 ADD MSTORE PUSH2 0x13E2 PUSH1 0xA0 DUP4 ADD DUP6 PUSH2 0x1264 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x13F4 DUP2 DUP6 PUSH2 0x1264 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x80 SWAP1 SWAP5 ADD SWAP4 SWAP1 SWAP4 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND DUP4 MSTORE DUP1 DUP9 AND PUSH1 0x20 DUP5 ADD MSTORE POP DUP6 PUSH1 0x40 DUP4 ADD MSTORE DUP5 PUSH1 0x60 DUP4 ADD MSTORE PUSH1 0xA0 PUSH1 0x80 DUP4 ADD MSTORE PUSH2 0xBF3 PUSH1 0xA0 DUP4 ADD DUP5 DUP7 PUSH2 0x129E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x4E SWAP1 DUP3 ADD MSTORE PUSH32 0x57726170416E644E6966747973776170236F6E45524331313535426174636852 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656365697665643A204F5244455220524543495049454E54204D555354204245 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x205448495320434F4E5452414354000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3C SWAP1 DUP3 ADD MSTORE PUSH32 0x57726170416E644E6966747973776170236F6E45524331313535526563656976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x65643A20494E56414C49445F455243313135355F524543454956454400000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x41 SWAP1 DUP3 ADD MSTORE PUSH32 0x57726170416E644E6966747973776170236F6E45524331313535426174636852 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656365697665643A20494E56414C49445F455243313135355F52454345495645 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x43 SWAP1 DUP3 ADD MSTORE PUSH32 0x57726170416E644E69667479737761702377726170416E64537761703A204F52 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x44455220524543495049454E54204D555354204245205448495320434F4E5452 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4143540000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE0 0xBA BALANCE CODESIZE PUSH14 0xD5D1D4991248DD9BAF24680FDEB DUP14 DUP9 0xC4 0x1E STATICCALL 0xC7 0xE NOT DUP15 PUSH3 0x7F05FF PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "831:5420:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1030:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2556:1414;;;;;;:::i;:::-;;:::i;:::-;;4739:1510;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;862:43::-;;;:::i;954:33::-;;;:::i;1114:32::-;;;:::i;4135:307::-;;;;;;:::i;:::-;;:::i;1030:30::-;;;:::o;2556:1414::-;2712:42;;:::i;:::-;2770:70;;;;2781:15;2770:70;:::i;:::-;3009:13;;2760:80;;-1:-1:-1;3009:29:9;;;;-1:-1:-1;3009:29:9;:63;;-1:-1:-1;3042:13:9;;:30;;3067:4;3042:30;3009:63;2994:162;;;;;;;;;;;;:::i;:::-;;;;;;;;;3208:65;;;;;:26;3215:5;3208:26;;;;:65;;3235:10;;3255:4;;3262:10;;3208:65;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3300:54:9;;;;;:20;:12;:20;;;;:54;;3321:5;;3336:4;;3343:10;;3300:54;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3386:13:9;:20;;;;3402:4;3386:20;;;-1:-1:-1;;3412:99:9;;;;;:29;:12;:29;;;;:99;;3450:4;;3457:8;;3467:14;;3483:10;;3495:15;;;;3412:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3533:5:9;3517:21;;;;;;3635:53;;;;;3533:5;;-1:-1:-1;3635:22:9;:12;:22;;-1:-1:-1;3635:22:9;;:53;;3666:4;;3673:14;;3635:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3604:84;-1:-1:-1;3698:24:9;;3694:116;;3732:71;;;;;:21;:12;:21;;;;:71;;3754:5;;3769:10;;3782:20;;3732:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3694:116;3916:19;;;;3937:23;;;;;3849:116;;;;;:39;3858:7;3849:39;;;;:116;;3897:4;;3904:10;;3916:19;;3849:116;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2556:1414;;;;;;:::o;4739:1510::-;4930:6;5008:13;;;;;:52;;-1:-1:-1;5025:10:9;:35;5047:12;5025:35;;5008:52;5004:255;;;-1:-1:-1;5076:53:9;5069:60;;5004:255;5146:10;:21;5160:7;5146:21;;5142:117;;5177:75;;;;;;;;;;:::i;5142:117::-;5293:43;;:::i;:::-;5351:71;;;;5362:15;5351:71;:::i;:::-;5444:13;;5342:80;;-1:-1:-1;5444:29:9;;;;-1:-1:-1;5444:29:9;:63;;-1:-1:-1;5477:13:9;;:30;;5502:4;5477:30;5444:63;5429:173;;;;;;;;;;;;:::i;:::-;5634:13;:20;;;;5650:4;5634:20;;;5660:100;;;;;5669:10;;5660:42;;:100;;5711:4;;5718:8;;5728:4;;;;5734:8;;;;5744:15;;;;5660:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5782:5:9;5766:21;;;;;;5879:53;;;;;5782:5;;-1:-1:-1;5879:22:9;:12;:22;;-1:-1:-1;5879:22:9;;:53;;5910:4;;5917:14;;5879:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5848:84;-1:-1:-1;5942:24:9;;5938:240;;6038:74;;;;;:21;:12;:21;;;;:74;;6060:5;;6083:4;;6091:20;;6038:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6120:51:9;;;;;:22;6127:5;6120:22;;-1:-1:-1;6120:22:9;;-1:-1:-1;6120:51:9;;6143:5;;6150:20;;6120:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5938:240;-1:-1:-1;6191:53:9;;-1:-1:-1;;4739:1510:9;;;;;;;;;;;:::o;862:43::-;;;:::o;954:33::-;;;:::o;1114:32::-;;;:::o;4135:307::-;4235:6;4255:10;:35;4277:12;4255:35;;4251:126;;4300:70;;;;;;;;;;:::i;4251:126::-;-1:-1:-1;4389:48:9;4135:307;;;;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:198:33:-;84:20;;144:42;133:54;;123:65;;113:2;;202:1;199;192:12;113:2;65:147;;;:::o;217:404::-;;;350:3;343:4;335:6;331:17;327:27;317:2;;375:8;365;358:26;317:2;-1:-1:-1;405:20:33;;448:18;437:30;;434:2;;;487:8;477;470:26;434:2;531:4;523:6;519:17;507:29;;594:3;587:4;579;571:6;567:17;559:6;555:30;551:41;548:50;545:2;;;611:1;608;601:12;545:2;307:314;;;;;:::o;626:916::-;;739:3;732:4;724:6;720:17;716:27;706:2;;761:5;754;747:20;706:2;805:6;792:20;831:18;872:2;864:6;861:14;858:2;;;878:9;858:2;908:4;943:2;935:6;931:15;975:2;969:9;1026:2;1021;1013:6;1009:15;1005:24;1079:6;1067:10;1064:22;1059:2;1047:10;1044:18;1041:46;1038:2;;;1090:9;1038:2;1117;1110:22;1191;;;1150:6;-1:-1:-1;1229:15:33;;;;-1:-1:-1;1264:15:33;;;1298;;;1294:24;;1291:33;-1:-1:-1;1288:2:33;;;1337:1;1334;1327:12;1288:2;1359:1;1350:10;;1369:167;1383:6;1380:1;1377:13;1369:167;;;1444:17;;1432:30;;1482:12;;;;1405:1;1398:9;;;;;1514:12;;1369:167;;;1373:3;;;;;696:846;;;;:::o;1547:221::-;1616:20;;1676:66;1665:78;;1655:89;;1645:2;;1758:1;1755;1748:12;1773:377;;;1890:3;1883:4;1875:6;1871:17;1867:27;1857:2;;1915:8;1905;1898:26;1857:2;-1:-1:-1;1945:20:33;;1988:18;1977:30;;1974:2;;;2027:8;2017;2010:26;1974:2;2071:4;2063:6;2059:17;2047:29;;2123:3;2116:4;2107:6;2099;2095:19;2091:30;2088:39;2085:2;;;2140:1;2137;2130:12;2155:1268;;;;;;;;;2424:3;2412:9;2403:7;2399:23;2395:33;2392:2;;;2446:6;2438;2431:22;2392:2;2474:31;2495:9;2474:31;:::i;:::-;2464:41;;2524:40;2560:2;2549:9;2545:18;2524:40;:::i;:::-;2514:50;;2615:2;2604:9;2600:18;2587:32;2638:18;2679:2;2671:6;2668:14;2665:2;;;2700:6;2692;2685:22;2665:2;2744:76;2812:7;2803:6;2792:9;2788:22;2744:76;:::i;:::-;2839:8;;-1:-1:-1;2718:102:33;-1:-1:-1;2927:2:33;2912:18;;2899:32;;-1:-1:-1;2943:16:33;;;2940:2;;;2977:6;2969;2962:22;2940:2;3021:78;3091:7;3080:8;3069:9;3065:24;3021:78;:::i;:::-;3118:8;;-1:-1:-1;2995:104:33;-1:-1:-1;3206:3:33;3191:19;;3178:33;;-1:-1:-1;3223:16:33;;;3220:2;;;3257:6;3249;3242:22;3220:2;;3301:62;3355:7;3344:8;3333:9;3329:24;3301:62;:::i;:::-;2382:1041;;;;-1:-1:-1;2382:1041:33;;-1:-1:-1;2382:1041:33;;;;;;3382:8;-1:-1:-1;;;2382:1041:33:o;3428:721::-;;;;;;;3627:3;3615:9;3606:7;3602:23;3598:33;3595:2;;;3649:6;3641;3634:22;3595:2;3677:31;3698:9;3677:31;:::i;:::-;3667:41;;3727:40;3763:2;3752:9;3748:18;3727:40;:::i;:::-;3717:50;;3814:2;3803:9;3799:18;3786:32;3776:42;;3865:2;3854:9;3850:18;3837:32;3827:42;;3920:3;3909:9;3905:19;3892:33;3948:18;3940:6;3937:30;3934:2;;;3985:6;3977;3970:22;3934:2;4029:60;4081:7;4072:6;4061:9;4057:22;4029:60;:::i;:::-;3585:564;;;;-1:-1:-1;3585:564:33;;-1:-1:-1;3585:564:33;;4108:8;;3585:564;-1:-1:-1;;;3585:564:33:o;4154:297::-;;4274:2;4262:9;4253:7;4249:23;4245:32;4242:2;;;4295:6;4287;4280:22;4242:2;4332:9;4326:16;4385:5;4378:13;4371:21;4364:5;4361:32;4351:2;;4412:6;4404;4397:22;4351:2;4440:5;4232:219;-1:-1:-1;;;4232:219:33:o;4456:1209::-;;;4614:2;4602:9;4593:7;4589:23;4585:32;4582:2;;;4635:6;4627;4620:22;4582:2;4663:30;4683:9;4663:30;:::i;:::-;4653:40;;4744:2;4733:9;4729:18;4716:32;4767:18;4808:2;4800:6;4797:14;4794:2;;;4829:6;4821;4814:22;4794:2;4857:22;;;;4913:4;4895:16;;;4891:27;4888:2;;;4936:6;4928;4921:22;4888:2;4974;4968:9;5016:4;5008:6;5004:17;5071:6;5059:10;5056:22;5051:2;5039:10;5036:18;5033:46;5030:2;;;5082:9;5030:2;5109;5102:22;5148:24;5169:2;5148:24;:::i;:::-;5140:6;5133:40;5219:2;5215;5211:11;5198:25;5248:2;5238:8;5235:16;5232:2;;;5269:6;5261;5254:22;5232:2;5311:62;5365:7;5354:8;5350:2;5346:17;5311:62;:::i;:::-;5306:2;5298:6;5294:15;5287:87;;5420:2;5416;5412:11;5399:25;5449:2;5439:8;5436:16;5433:2;;;5470:6;5462;5455:22;5433:2;5512:62;5566:7;5555:8;5551:2;5547:17;5512:62;:::i;:::-;5507:2;5499:6;5495:15;5488:87;;5629:2;5625;5621:11;5608:25;5603:2;5595:6;5591:15;5584:50;5653:6;5643:16;;;;;4572:1093;;;;;:::o;5670:810::-;;;5820:9;5811:7;5807:23;5850:3;5846:2;5842:12;5839:2;;;5872:6;5864;5857:22;5839:2;5900:30;5920:9;5900:30;:::i;:::-;5890:40;;6023:4;5954:66;5950:2;5946:75;5942:86;5939:2;;;6046:6;6038;6031:22;5939:2;;6084;6078:9;6126:4;6118:6;6114:17;6197:6;6185:10;6182:22;6161:18;6149:10;6146:34;6143:62;6140:2;;;6208:9;6140:2;6235;6228:22;6274:40;6310:2;6295:18;;6274:40;:::i;:::-;6266:6;6259:56;6376:2;6365:9;6361:18;6348:32;6343:2;6335:6;6331:15;6324:57;6442:4;6431:9;6427:20;6414:34;6409:2;6401:6;6397:15;6390:59;6468:6;6458:16;;;5787:693;;;;;:::o;6485:194::-;;6608:2;6596:9;6587:7;6583:23;6579:32;6576:2;;;6629:6;6621;6614:22;6576:2;-1:-1:-1;6657:16:33;;6566:113;-1:-1:-1;6566:113:33:o;6684:575::-;;;;;6849:2;6837:9;6828:7;6824:23;6820:32;6817:2;;;6870:6;6862;6855:22;6817:2;6911:9;6898:23;6888:33;;6940:40;6976:2;6965:9;6961:18;6940:40;:::i;:::-;6930:50;;7031:2;7020:9;7016:18;7003:32;7058:18;7050:6;7047:30;7044:2;;;7095:6;7087;7080:22;7044:2;7139:60;7191:7;7182:6;7171:9;7167:22;7139:60;:::i;:::-;6807:452;;;;-1:-1:-1;7218:8:33;-1:-1:-1;;;;6807:452:33:o;7264:416::-;;7370:6;7365:3;7358:19;7400:66;7392:6;7389:78;7386:2;;;7482:3;7477;7470:16;7386:2;7525:4;7517:6;7513:17;7575:8;7568:5;7561:4;7556:3;7552:14;7539:45;7607:18;;;;7627:4;7603:29;7641:15;;;-1:-1:-1;7603:29:33;;7348:332;-1:-1:-1;7348:332:33:o;7685:443::-;;7782:5;7776:12;7809:6;7804:3;7797:19;7835:4;7864:2;7859:3;7855:12;7848:19;;7901:2;7894:5;7890:14;7922:3;7934:169;7948:6;7945:1;7942:13;7934:169;;;8009:13;;7997:26;;8043:12;;;;8078:15;;;;7970:1;7963:9;7934:169;;;-1:-1:-1;8119:3:33;;7752:376;-1:-1:-1;;;;;7752:376:33:o;8133:329::-;;8223:6;8218:3;8211:19;8275:6;8268:5;8261:4;8256:3;8252:14;8239:43;8327:3;8320:4;8311:6;8306:3;8302:16;8298:27;8291:40;8451:4;8381:66;8376:2;8368:6;8364:15;8360:88;8355:3;8351:98;8347:109;8340:116;;8201:261;;;;;:::o;8467:226::-;8643:42;8631:55;;;;8613:74;;8601:2;8586:18;;8568:125::o;8698:406::-;8918:42;8987:15;;;8969:34;;9039:15;;;;9034:2;9019:18;;9012:43;9086:2;9071:18;;9064:34;;;;8896:2;8881:18;;8863:241::o;9528:944::-;;9909:42;9990:2;9982:6;9978:15;9967:9;9960:34;10042:2;10034:6;10030:15;10025:2;10014:9;10010:18;10003:43;;10082:3;10077:2;10066:9;10062:18;10055:31;10109:80;10184:3;10173:9;10169:19;10161:6;10153;10109:80;:::i;:::-;10237:9;10229:6;10225:22;10220:2;10209:9;10205:18;10198:50;10271:67;10331:6;10323;10315;10271:67;:::i;:::-;10257:81;;10387:9;10379:6;10375:22;10369:3;10358:9;10354:19;10347:51;10415;10459:6;10451;10443;10415:51;:::i;:::-;10407:59;9889:583;-1:-1:-1;;;;;;;;;;;9889:583:33:o;10477:927::-;;10882:42;10963:2;10955:6;10951:15;10940:9;10933:34;11015:2;11007:6;11003:15;10998:2;10987:9;10983:18;10976:43;;11055:3;11050:2;11039:9;11035:18;11028:31;11082:63;11140:3;11129:9;11125:19;11117:6;11082:63;:::i;:::-;11193:9;11185:6;11181:22;11176:2;11165:9;11161:18;11154:50;11227;11270:6;11262;11227:50;:::i;:::-;11314:22;;;11308:3;11293:19;;;11286:51;;;;-1:-1:-1;11346:20:33;;11395:2;11383:15;;10862:542;-1:-1:-1;;;;10862:542:33:o;11812:612::-;;12073:42;12154:2;12146:6;12142:15;12131:9;12124:34;12206:2;12198:6;12194:15;12189:2;12178:9;12174:18;12167:43;;12246:6;12241:2;12230:9;12226:18;12219:34;12289:6;12284:2;12273:9;12269:18;12262:34;12333:3;12327;12316:9;12312:19;12305:32;12354:64;12413:3;12402:9;12398:19;12390:6;12382;12354:64;:::i;12429:297::-;12633:42;12621:55;;;;12603:74;;12708:2;12693:18;;12686:34;12591:2;12576:18;;12558:168::o;12731:248::-;12905:66;12893:79;;;;12875:98;;12863:2;12848:18;;12830:149::o;13245:482::-;13447:2;13429:21;;;13486:2;13466:18;;;13459:30;13525:34;13520:2;13505:18;;13498:62;13596:34;13591:2;13576:18;;13569:62;13668:16;13662:3;13647:19;;13640:45;13717:3;13702:19;;13419:308::o;13732:424::-;13934:2;13916:21;;;13973:2;13953:18;;;13946:30;14012:34;14007:2;13992:18;;13985:62;14083:30;14078:2;14063:18;;14056:58;14146:3;14131:19;;13906:250::o;14161:469::-;14363:2;14345:21;;;14402:2;14382:18;;;14375:30;14441:34;14436:2;14421:18;;14414:62;14512:34;14507:2;14492:18;;14485:62;14584:3;14578;14563:19;;14556:32;14620:3;14605:19;;14335:295::o;14635:471::-;14837:2;14819:21;;;14876:2;14856:18;;;14849:30;14915:34;14910:2;14895:18;;14888:62;14986:34;14981:2;14966:18;;14959:62;15058:5;15052:3;15037:19;;15030:34;15096:3;15081:19;;14809:297::o"
            },
            "methodIdentifiers": {
              "erc1155()": "d56022d7",
              "erc20()": "785e9e86",
              "exchange()": "d2f7265a",
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "tokenWrapper()": "c5e3dfd8",
              "wrapAndSwap(uint256,address,bytes)": "a874d5b6"
            }
          }
        }
      },
      "erc20-meta-token/contracts/interfaces/IERC20Wrapper.sol": {
        "IERC20Wrapper": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "getIdAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getNTokens",
              "outputs": [],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                }
              ],
              "name": "getTokenID",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenID",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "address payable",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "address payable",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address payable",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "deposit(address,address,uint256)": "8340f549",
              "getIdAddress(uint256)": "7358e9a5",
              "getNTokens()": "9040a949",
              "getTokenID(address)": "63f8071c",
              "isApprovedForAll(address,address)": "e985e9c5",
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "withdraw(address,address,uint256)": "d9caed12"
            }
          }
        }
      },
      "erc20-meta-token/contracts/mocks/ERC20Mock.sol": {
        "ERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610687806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610170578063a457c2d7146101a3578063a9059cbb146101dc578063dd62ed3e1461021557610088565b8063095ea7b31461008d57806318160ddd146100da57806323b872dd146100f45780633950935114610137575b600080fd5b6100c6600480360360408110156100a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610250565b604080519115158252519081900360200190f35b6100e2610266565b60408051918252519081900360200190f35b6100c66004803603606081101561010a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561026c565b6100c66004803603604081101561014d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356102ca565b6100e26004803603602081101561018657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661030d565b6100c6600480360360408110156101b957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610335565b6100c6600480360360408110156101f257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610378565b6100e26004803603604081101561022b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610385565b600061025d3384846103bd565b50600192915050565b60025490565b600061027984848461046c565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546102c09186916102bb908661055f565b6103bd565b5060019392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161025d9185906102bb90866105d6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161025d9185906102bb908661055f565b600061025d33848461046c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff82166103dd57600080fd5b73ffffffffffffffffffffffffffffffffffffffff83166103fd57600080fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff821661048c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546104bc908261055f565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546104f890826105d6565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008282018381101561064a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b939250505056fea26469706673582212207fab43846d83b43dd72466e64bb3f5809ad78368014418c1bb8d2ea82544d59e64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x687 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x215 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x137 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x250 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x266 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x26C JUMP JUMPDEST PUSH2 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2CA JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x30D JUMP JUMPDEST PUSH2 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x335 JUMP JUMPDEST PUSH2 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x378 JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x385 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25D CALLER DUP5 DUP5 PUSH2 0x3BD JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x279 DUP5 DUP5 DUP5 PUSH2 0x46C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x2C0 SWAP2 DUP7 SWAP2 PUSH2 0x2BB SWAP1 DUP7 PUSH2 0x55F JUMP JUMPDEST PUSH2 0x3BD JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x25D SWAP2 DUP6 SWAP1 PUSH2 0x2BB SWAP1 DUP7 PUSH2 0x5D6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x25D SWAP2 DUP6 SWAP1 PUSH2 0x2BB SWAP1 DUP7 PUSH2 0x55F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25D CALLER DUP5 DUP5 PUSH2 0x46C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4BC SWAP1 DUP3 PUSH2 0x55F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x4F8 SWAP1 DUP3 PUSH2 0x5D6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x64A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0xAB43846D83B43DD72466E64BB3F5809AD78368014418C1BB8D2EA82544D59E64 PUSH20 0x6F6C634300070400330000000000000000000000 ",
              "sourceMap": "693:6787:11:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100885760003560e01c806370a082311161005b57806370a0823114610170578063a457c2d7146101a3578063a9059cbb146101dc578063dd62ed3e1461021557610088565b8063095ea7b31461008d57806318160ddd146100da57806323b872dd146100f45780633950935114610137575b600080fd5b6100c6600480360360408110156100a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610250565b604080519115158252519081900360200190f35b6100e2610266565b60408051918252519081900360200190f35b6100c66004803603606081101561010a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561026c565b6100c66004803603604081101561014d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356102ca565b6100e26004803603602081101561018657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661030d565b6100c6600480360360408110156101b957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610335565b6100c6600480360360408110156101f257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610378565b6100e26004803603604081101561022b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610385565b600061025d3384846103bd565b50600192915050565b60025490565b600061027984848461046c565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600160209081526040808320338085529252909120546102c09186916102bb908661055f565b6103bd565b5060019392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161025d9185906102bb90866105d6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909161025d9185906102bb908661055f565b600061025d33848461046c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff82166103dd57600080fd5b73ffffffffffffffffffffffffffffffffffffffff83166103fd57600080fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff821661048c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020546104bc908261055f565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526020819052604080822093909355908416815220546104f890826105d6565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000828211156105d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008282018381101561064a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b939250505056fea26469706673582212207fab43846d83b43dd72466e64bb3f5809ad78368014418c1bb8d2ea82544d59e64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x88 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x70A08231 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x170 JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1A3 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x1DC JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x215 JUMPI PUSH2 0x88 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x8D JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xDA JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x39509351 EQ PUSH2 0x137 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x250 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE2 PUSH2 0x266 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x26C JUMP JUMPDEST PUSH2 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2CA JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x30D JUMP JUMPDEST PUSH2 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x335 JUMP JUMPDEST PUSH2 0xC6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x378 JUMP JUMPDEST PUSH2 0xE2 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x22B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x385 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25D CALLER DUP5 DUP5 PUSH2 0x3BD JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x279 DUP5 DUP5 DUP5 PUSH2 0x46C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x2C0 SWAP2 DUP7 SWAP2 PUSH2 0x2BB SWAP1 DUP7 PUSH2 0x55F JUMP JUMPDEST PUSH2 0x3BD JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x25D SWAP2 DUP6 SWAP1 PUSH2 0x2BB SWAP1 DUP7 PUSH2 0x5D6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x25D SWAP2 DUP6 SWAP1 PUSH2 0x2BB SWAP1 DUP7 PUSH2 0x55F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x25D CALLER DUP5 DUP5 PUSH2 0x46C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x3FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x48C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x4BC SWAP1 DUP3 PUSH2 0x55F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x4F8 SWAP1 DUP3 PUSH2 0x5D6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x64A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH32 0xAB43846D83B43DD72466E64BB3F5809AD78368014418C1BB8D2EA82544D59E64 PUSH20 0x6F6C634300070400330000000000000000000000 ",
              "sourceMap": "693:6787:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:144;;;;;;;;;;;;;;;;-1:-1:-1;2744:144:11;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;968:92;;;:::i;:::-;;;;;;;;;;;;;;;;3340:219;;;;;;;;;;;;;;;;-1:-1:-1;3340:219:11;;;;;;;;;;;;;;;;;;:::i;4060:190::-;;;;;;;;;;;;;;;;-1:-1:-1;4060:190:11;;;;;;;;;:::i;1264:107::-;;;;;;;;;;;;;;;;-1:-1:-1;1264:107:11;;;;:::i;4756:200::-;;;;;;;;;;;;;;;;-1:-1:-1;4756:200:11;;;;;;;;;:::i;1984:136::-;;;;;;;;;;;;;;;;-1:-1:-1;1984:136:11;;;;;;;;;:::i;1693:132::-;;;;;;;;;;;;;;;;-1:-1:-1;1693:132:11;;;;;;;;;;;:::i;2744:144::-;2818:4;2830:36;2839:10;2851:7;2860:5;2830:8;:36::i;:::-;-1:-1:-1;2879:4:11;2744:144;;;;:::o;968:92::-;1043:12;;968:92;:::o;3340:219::-;3428:4;3440:26;3450:4;3456:2;3460:5;3440:9;:26::i;:::-;3499:14;;;;;;;:8;:14;;;;;;;;3487:10;3499:26;;;;;;;;;3472:65;;3481:4;;3499:37;;3530:5;3499:30;:37::i;:::-;3472:8;:65::i;:::-;-1:-1:-1;3550:4:11;3340:219;;;;;:::o;4060:190::-;4161:10;4140:4;4182:20;;;:8;:20;;;;;;;;;:29;;;;;;;;;;4140:4;;4152:76;;4173:7;;4182:45;;4216:10;4182:33;:45::i;1264:107::-;1350:16;;1328:7;1350:16;;;;;;;;;;;;1264:107::o;4756:200::-;4862:10;4841:4;4883:20;;;:8;:20;;;;;;;;;:29;;;;;;;;;;4841:4;;4853:81;;4874:7;;4883:50;;4917:15;4883:33;:50::i;1984:136::-;2054:4;2066:32;2076:10;2088:2;2092:5;2066:9;:32::i;1693:132::-;1796:15;;;;1774:7;1796:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;1693:132::o;6700:230::-;6788:21;;;6780:30;;;;;;6824:19;;;6816:28;;;;;;6851:15;;;;;;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;:32;;;6894:31;;;;;;;;;;;;;;;;;6700:230;;;:::o;5166:238::-;5249:16;;;5241:25;;;;;;5291:15;;;:9;:15;;;;;;;;;;;:26;;5311:5;5291:19;:26::i;:::-;5273:15;;;;:9;:15;;;;;;;;;;;:44;;;;5339:13;;;;;;;:24;;5357:5;5339:17;:24::i;:::-;5323:13;;;;:9;:13;;;;;;;;;;;;:40;;;;5374:25;;;;;;;5323:13;;5374:25;;;;;;;;;;;;;5166:238;;;:::o;1186:158:31:-;1244:7;1272:1;1267;:6;;1259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1319:5:31;;;1186:158::o;1419:::-;1477:7;1504:5;;;1523:6;;;;1515:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:1;1419:158;-1:-1:-1;;;1419:158:31:o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        },
        "ERC20Mock": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "subtractedValue",
                  "type": "uint256"
                }
              ],
              "name": "decreaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "addedValue",
                  "type": "uint256"
                }
              ],
              "name": "increaseAllowance",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_address",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "mockMint",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506107ae806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80633950935111610076578063a457c2d71161005b578063a457c2d7146101f9578063a9059cbb14610232578063dd62ed3e1461026b576100a3565b8063395093511461018d57806370a08231146101c6576100a3565b8063095ea7b3146100a857806318160ddd146100f557806323b872dd1461010f578063378934b414610152575b600080fd5b6100e1600480360360408110156100be57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356102a6565b604080519115158252519081900360200190f35b6100fd6102bc565b60408051918252519081900360200190f35b6100e16004803603606081101561012557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356102c2565b61018b6004803603604081101561016857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610320565b005b6100e1600480360360408110156101a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561032e565b6100fd600480360360208110156101dc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610371565b6100e16004803603604081101561020f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610399565b6100e16004803603604081101561024857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103dc565b6100fd6004803603604081101561028157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166103e9565b60006102b3338484610421565b50600192915050565b60025490565b60006102cf8484846104d0565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461031691869161031190866105c3565b610421565b5060019392505050565b61032a828261063a565b5050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102b391859061031190866106fd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102b391859061031190866105c3565b60006102b33384846104d0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff821661044157600080fd5b73ffffffffffffffffffffffffffffffffffffffff831661046157600080fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff82166104f057600080fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205461052090826105c3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461055c90826106fd565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561063457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b73ffffffffffffffffffffffffffffffffffffffff821661065a57600080fd5b60025461066790826106fd565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461069a90826106fd565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101561077157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b939250505056fea26469706673582212205866081f56e3a155e98457a824cceebb71cb24f46ca5f41333990e4d60405b3964736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7AE DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x26B JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1C6 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x378934B4 EQ PUSH2 0x152 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2C2 JUMP JUMPDEST PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x320 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x32E JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x371 JUMP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x399 JUMP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3DC JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 CALLER DUP5 DUP5 PUSH2 0x421 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF DUP5 DUP5 DUP5 PUSH2 0x4D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x316 SWAP2 DUP7 SWAP2 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x5C3 JUMP JUMPDEST PUSH2 0x421 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x32A DUP3 DUP3 PUSH2 0x63A JUMP JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x2B3 SWAP2 DUP6 SWAP1 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x2B3 SWAP2 DUP6 SWAP1 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 CALLER DUP5 DUP5 PUSH2 0x4D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x520 SWAP1 DUP3 PUSH2 0x5C3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x55C SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x634 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x667 SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x69A SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x771 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PC PUSH7 0x81F56E3A155E9 DUP5 JUMPI 0xA8 0x24 0xCC 0xEE 0xBB PUSH18 0xCB24F46CA5F41333990E4D60405B3964736F PUSH13 0x63430007040033000000000000 ",
              "sourceMap": "7482:158:11:-:0;;;7514:24;;;;;;;;;;7482:158;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100a35760003560e01c80633950935111610076578063a457c2d71161005b578063a457c2d7146101f9578063a9059cbb14610232578063dd62ed3e1461026b576100a3565b8063395093511461018d57806370a08231146101c6576100a3565b8063095ea7b3146100a857806318160ddd146100f557806323b872dd1461010f578063378934b414610152575b600080fd5b6100e1600480360360408110156100be57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356102a6565b604080519115158252519081900360200190f35b6100fd6102bc565b60408051918252519081900360200190f35b6100e16004803603606081101561012557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356102c2565b61018b6004803603604081101561016857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610320565b005b6100e1600480360360408110156101a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561032e565b6100fd600480360360208110156101dc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610371565b6100e16004803603604081101561020f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610399565b6100e16004803603604081101561024857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103dc565b6100fd6004803603604081101561028157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166103e9565b60006102b3338484610421565b50600192915050565b60025490565b60006102cf8484846104d0565b73ffffffffffffffffffffffffffffffffffffffff841660009081526001602090815260408083203380855292529091205461031691869161031190866105c3565b610421565b5060019392505050565b61032a828261063a565b5050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102b391859061031190866106fd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916102b391859061031190866105c3565b60006102b33384846104d0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff821661044157600080fd5b73ffffffffffffffffffffffffffffffffffffffff831661046157600080fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff82166104f057600080fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205461052090826105c3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461055c90826106fd565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282111561063457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b73ffffffffffffffffffffffffffffffffffffffff821661065a57600080fd5b60025461066790826106fd565b60025573ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205461069a90826106fd565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101561077157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b939250505056fea26469706673582212205866081f56e3a155e98457a824cceebb71cb24f46ca5f41333990e4d60405b3964736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x39509351 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xA457C2D7 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xA457C2D7 EQ PUSH2 0x1F9 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x232 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x26B JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x39509351 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x1C6 JUMPI PUSH2 0xA3 JUMP JUMPDEST DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xF5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x10F JUMPI DUP1 PUSH4 0x378934B4 EQ PUSH2 0x152 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x2A6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xFD PUSH2 0x2BC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x125 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2C2 JUMP JUMPDEST PUSH2 0x18B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x168 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x320 JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x32E JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x371 JUMP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x20F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x399 JUMP JUMPDEST PUSH2 0xE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x248 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3DC JUMP JUMPDEST PUSH2 0xFD PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x3E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 CALLER DUP5 DUP5 PUSH2 0x421 JUMP JUMPDEST POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2CF DUP5 DUP5 DUP5 PUSH2 0x4D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP1 DUP6 MSTORE SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x316 SWAP2 DUP7 SWAP2 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x5C3 JUMP JUMPDEST PUSH2 0x421 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x32A DUP3 DUP3 PUSH2 0x63A JUMP JUMPDEST POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x2B3 SWAP2 DUP6 SWAP1 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD SWAP1 SWAP2 PUSH2 0x2B3 SWAP2 DUP6 SWAP1 PUSH2 0x311 SWAP1 DUP7 PUSH2 0x5C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B3 CALLER DUP5 DUP5 PUSH2 0x4D0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x4F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x520 SWAP1 DUP3 PUSH2 0x5C3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x55C SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x634 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x2 SLOAD PUSH2 0x667 SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x69A SWAP1 DUP3 PUSH2 0x6FD JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x771 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PC PUSH7 0x81F56E3A155E9 DUP5 JUMPI 0xA8 0x24 0xCC 0xEE 0xBB PUSH18 0xCB24F46CA5F41333990E4D60405B3964736F PUSH13 0x63430007040033000000000000 ",
              "sourceMap": "7482:158:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:144;;;;;;;;;;;;;;;;-1:-1:-1;2744:144:11;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;968:92;;;:::i;:::-;;;;;;;;;;;;;;;;3340:219;;;;;;;;;;;;;;;;-1:-1:-1;3340:219:11;;;;;;;;;;;;;;;;;;:::i;7542:95::-;;;;;;;;;;;;;;;;-1:-1:-1;7542:95:11;;;;;;;;;:::i;:::-;;4060:190;;;;;;;;;;;;;;;;-1:-1:-1;4060:190:11;;;;;;;;;:::i;1264:107::-;;;;;;;;;;;;;;;;-1:-1:-1;1264:107:11;;;;:::i;4756:200::-;;;;;;;;;;;;;;;;-1:-1:-1;4756:200:11;;;;;;;;;:::i;1984:136::-;;;;;;;;;;;;;;;;-1:-1:-1;1984:136:11;;;;;;;;;:::i;1693:132::-;;;;;;;;;;;;;;;;-1:-1:-1;1693:132:11;;;;;;;;;;;:::i;2744:144::-;2818:4;2830:36;2839:10;2851:7;2860:5;2830:8;:36::i;:::-;-1:-1:-1;2879:4:11;2744:144;;;;:::o;968:92::-;1043:12;;968:92;:::o;3340:219::-;3428:4;3440:26;3450:4;3456:2;3460:5;3440:9;:26::i;:::-;3499:14;;;;;;;:8;:14;;;;;;;;3487:10;3499:26;;;;;;;;;3472:65;;3481:4;;3499:37;;3530:5;3499:30;:37::i;:::-;3472:8;:65::i;:::-;-1:-1:-1;3550:4:11;3340:219;;;;;:::o;7542:95::-;7608:24;7614:8;7624:7;7608:5;:24::i;:::-;7542:95;;:::o;4060:190::-;4161:10;4140:4;4182:20;;;:8;:20;;;;;;;;;:29;;;;;;;;;;4140:4;;4152:76;;4173:7;;4182:45;;4216:10;4182:33;:45::i;1264:107::-;1350:16;;1328:7;1350:16;;;;;;;;;;;;1264:107::o;4756:200::-;4862:10;4841:4;4883:20;;;:8;:20;;;;;;;;;:29;;;;;;;;;;4841:4;;4853:81;;4874:7;;4883:50;;4917:15;4883:33;:50::i;1984:136::-;2054:4;2066:32;2076:10;2088:2;2092:5;2066:9;:32::i;1693:132::-;1796:15;;;;1774:7;1796:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;1693:132::o;6700:230::-;6788:21;;;6780:30;;;;;;6824:19;;;6816:28;;;;;;6851:15;;;;;;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;:32;;;6894:31;;;;;;;;;;;;;;;;;6700:230;;;:::o;5166:238::-;5249:16;;;5241:25;;;;;;5291:15;;;:9;:15;;;;;;;;;;;:26;;5311:5;5291:19;:26::i;:::-;5273:15;;;;:9;:15;;;;;;;;;;;:44;;;;5339:13;;;;;;;:24;;5357:5;5339:17;:24::i;:::-;5323:13;;;;:9;:13;;;;;;;;;;;;:40;;;;5374:25;;;;;;;5323:13;;5374:25;;;;;;;;;;;;;5166:238;;;:::o;1186:158:31:-;1244:7;1272:1;1267;:6;;1259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1319:5:31;;;1186:158::o;5737:245:11:-;5807:21;;;5799:30;;;;;;5851:12;;:23;;5868:5;5851:16;:23::i;:::-;5836:12;:38;5901:18;;;:9;:18;;;;;;;;;;;:29;;5924:5;5901:22;:29::i;:::-;5880:18;;;:9;:18;;;;;;;;;;;:50;;;;5941:36;;;;;;;5880:18;;:9;;5941:36;;;;;;;;;;5737:245;;:::o;1419:158:31:-;1477:7;1504:5;;;1523:6;;;;1515:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:1;1419:158;-1:-1:-1;;;1419:158:31:o"
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "decreaseAllowance(address,uint256)": "a457c2d7",
              "increaseAllowance(address,uint256)": "39509351",
              "mockMint(address,uint256)": "378934b4",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol": {
        "MetaERC20Wrapper": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "signer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "name": "NonceChange",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "token_address",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "token_id",
                  "type": "uint256"
                }
              ],
              "name": "TokenRegistration",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_recipient",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "deposit",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "getIdAddress",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getNTokens",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_signer",
                  "type": "address"
                }
              ],
              "name": "getNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                }
              ],
              "name": "getTokenID",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "tokenID",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_signerAddress",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "_hash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "_sig",
                  "type": "bytes"
                }
              ],
              "name": "isValidSignature",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isValid",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bool",
                  "name": "_isGasFee",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "metaSafeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "_isGasFee",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "metaSafeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "_isGasFee",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "metaSetApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address payable",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address payable",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_token",
                  "type": "address"
                },
                {
                  "internalType": "address payable",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "withdraw",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "stateMutability": "payable",
              "type": "receive"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052600160035534801561001557600080fd5b50600160008190527fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0581905560056020527f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b80546001600160a01b031916909117905561431a806100876000396000f3fe6080604052600436106101475760003560e01c8063a22cb465116100c0578063e985e9c511610074578063f242432a11610059578063f242432a14610391578063f5d4c820146103b1578063fa4e12d7146103d15761015a565b8063e985e9c514610351578063f23a6e61146103715761015a565b8063bc197c81116100a5578063bc197c81146102e4578063ce0b514b14610311578063d9caed12146103315761015a565b8063a22cb465146102a4578063a3d4926e146102c45761015a565b80634e1273f4116101175780637358e9a5116100fc5780637358e9a51461024f5780638340f5491461027c5780639040a9491461028f5761015a565b80634e1273f41461020257806363f8071c1461022f5761015a565b8062fdd58e1461015f57806301ffc9a7146101955780632d0335ab146101c25780632eb2c2d6146101e25761015a565b3661015a57610158600133346103f1565b005b600080fd5b34801561016b57600080fd5b5061017f61017a366004613478565b6106c4565b60405161018c9190613edc565b60405180910390f35b3480156101a157600080fd5b506101b56101b0366004613582565b6106f7565b60405161018c9190613831565b3480156101ce57600080fd5b5061017f6101dd366004612fc5565b6107de565b3480156101ee57600080fd5b506101586101fd366004613270565b610806565b34801561020e57600080fd5b5061022261021d3660046134a3565b610911565b60405161018c91906137ed565b34801561023b57600080fd5b5061017f61024a366004612fc5565b610a5d565b34801561025b57600080fd5b5061026f61026a366004613681565b610aba565b60405161018c9190613730565b61015861028a36600461332b565b6103f1565b34801561029b57600080fd5b5061017f610b16565b3480156102b057600080fd5b506101586102bf3660046133ce565b610b1c565b3480156102d057600080fd5b506101586102df3660046131b3565b610bb5565b3480156102f057600080fd5b506103046102ff366004613062565b610d29565b60405161018c91906138b9565b34801561031d57600080fd5b5061015861032c36600461333f565b610df3565b34801561033d57600080fd5b5061015861034c36600461310c565b610ed2565b34801561035d57600080fd5b506101b561036c36600461302a565b610eeb565b34801561037d57600080fd5b5061030461038c36600461314c565b610f26565b34801561039d57600080fd5b506101586103ac3660046133b7565b610fa2565b3480156103bd57600080fd5b506101586103cc3660046132be565b6110a6565b3480156103dd57600080fd5b506101b56103ec3660046133fb565b6111d6565b73ffffffffffffffffffffffffffffffffffffffff8216610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613943565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff841660011461066657341561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139fd565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906104f590339030908790600401613751565b602060405180830381600087803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105479190613566565b506105506119b7565b610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613a5a565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260409020548061065c576003805460010190819055600081815260056020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b169081179091558352600490915290819020829055519092507ff977d54986414fc91816901629d1d788ad95448ab4198dcb9b6dc5ed2b930c1f9061064f9087908590613782565b60405180910390a1610660565b8091505b506106a3565b34821461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906138e6565b5060015b6106be838284604051806020016040528060008152506119eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061078a57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b806107d657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b3373ffffffffffffffffffffffffffffffffffffffff8616148061082f575061082f8533610eeb565b610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806141be602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166108f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061412f6030913960400191505060405180910390fd5b6108fc85858585611aa0565b61090a858585855a86611df4565b5050505050565b6060815183511461096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061415f602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561098757600080fd5b506040519080825280602002602001820160405280156109b1578160200160208202803683370190505b50905060005b8451811015610a55576000808683815181106109cf57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858381518110610a1f57fe5b6020026020010151815260200190815260200160002054828281518110610a4257fe5b60209081029190910101526001016109b7565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020526040902054806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613dc5565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613c51565b60035490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff8516610c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d0b565b6060610c0c612df6565b6060610cbf89857fa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a060001b8c8c8c604051602001610c4a9190613699565b604051602081830303815290604052805190602001208c604051602001610c719190613699565b604051602081830303815290604052805190602001208c610c93576000610c96565b60015b604051602001610cab9695949392919061383c565b604051602081830303815290604052612061565b9050610ccd89898989611aa0565b8415610d105780806020019051810190610ce7919061364c565b8094508193505050610d0189898989866020015188611df4565b610d0b8983612230565b610d1e565b610d1e898989895a86611df4565b505050505050505050565b6000333014610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b71565b60005b8451811015610dc757610d8c858281518110610d7f57fe5b6020026020010151610aba565b50610dbf3087878481518110610d9e57fe5b6020026020010151878581518110610db257fe5b60200260200101516124d9565b600101610d67565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610e40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613ab7565b6060610e4a612df6565b6060610e8289857fce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558828c8c8c8c610c93576000610c96565b9050610e90898989896126da565b8415610ec45780806020019051810190610eaa919061364c565b8094508193505050610d01898989898660200151886127dd565b610d1e898989895a866127dd565b6000610edd84610a5d565b90506106be338483856124d9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000333014610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139a0565b610f6a84610aba565b50610f77308686866124d9565b507ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3373ffffffffffffffffffffffffffffffffffffffff86161480610fcb5750610fcb8533610eeb565b611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614029602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613fc7602b913960400191505060405180910390fd5b611098858585856126da565b61090a858585855a866127dd565b606061110286837ff5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa5248289896110dc5760006110df565b60015b896110eb5760006110ee565b60015b604051602001610cab95949392919061387d565b73ffffffffffffffffffffffffffffffffffffffff8781166000818152600160209081526040808320948b16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168915151790555192935090917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190611196908890613831565b60405180910390a382156111ce576111ac612df6565b818060200190518101906111c09190613619565b90506111cc8782612230565b505b505050505050565b600080825111611231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806141ed6043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851661129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018061418b6033913960400191505060405180910390fd5b60006112a8836129ce565b60f81c905060058110611306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b60008160ff16600581111561131757fe5b905060008080808085600581111561132b57fe5b1415611382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806140c26036913960400191505060405180910390fd5b600185600581111561139057fe5b14156114d35787516061146113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b6113fb886000612a8b565b9250611408886020612a8b565b91508760408151811061141757fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611481573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d811691161497506119af9650505050505050565b60028560058111156114e157fe5b1415611631578751606114611541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b61154c886000612a8b565b9250611559886020612a8b565b91508760408151811061156857fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611481573d6000803e3d6000fd5b600385600581111561163f57fe5b14156117f757604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b838110156116cd5781810151838201526020016116b5565b50505050905090810190601f1680156116fa5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561172d578181015183820152602001611715565b50505050905090810190601f16801561175a5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561177957600080fd5b505afa15801561178d573d6000803e3d6000fd5b505050506040513d60208110156117a357600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b600485600581111561180557fe5b141561195e57604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b8381101561189557818101518382015260200161187d565b50505050905090810190601f1680156118c25780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b1580156118e057600080fd5b505afa1580156118f4573d6000803e3d6000fd5b505050506040513d602081101561190a57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b949350505050565b6000803d80156119ce57602081146119d7576119e3565b600191506119e3565b60206000803e60005191505b501515905090565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152902054611a249083612af3565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46106be60008585855a866127dd565b8051825114611afa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806140536035913960400191505060405180910390fd5b815160005b81811015611cec57611b8f838281518110611b1657fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611b6a57fe5b6020026020010151815260200190815260200160002054612b6e90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611bdb57fe5b6020026020010151815260200190815260200160002081905550611c7d838281518110611c0457fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611c5857fe5b6020026020010151815260200190815260200160002054612af390919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611cc957fe5b602090810291909101810151825281019190915260400160002055600101611aff565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611d99578181015183820152602001611d81565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611dd8578181015183820152602001611dc0565b5050505090500194505050505060405180910390a45050505050565b611e138573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611ecb578181015183820152602001611eb3565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611f0a578181015183820152602001611ef2565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611f46578181015183820152602001611f2e565b50505050905090810190601f168015611f735780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611f9857600080fd5b5087f1158015611fac573d6000803e3d6000fd5b50505050506040513d6020811015611fc357600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614230603f913960400191505060405180910390fd5b6060808380602001905181019061207891906135c2565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040812054919450919250906120b0836041612a8b565b90508181108015906120c457508160640181105b6120fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e22565b60006121368683878051906020012060405160200161211b939291906136cf565b60405160208183030381529060405280519060200120612c1c565b9050606086838760405160200161214f939291906136f6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825273ffffffffffffffffffffffffffffffffffffffff8c166000818152600260205292909220600187019081905590935090917fb861b7bdbe611a846ab271b8d2810391bc8b5a968f390c322438ecab66bccf59916121da91613edc565b60405180910390a26121ee898383886111d6565b612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b14565b50505050509392505050565b600061223f82606001516129ce565b60f81c90506002811061227e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e7f565b60008160ff16600281111561228f57fe5b835160408501519192506000918291829173ffffffffffffffffffffffffffffffffffffffff16156122c55786604001516122c7565b335b925060008560028111156122d757fe5b14156123d65786606001518060200190518101906122f59190612ffd565b909450915073ffffffffffffffffffffffffffffffffffffffff841630141561234657612324888484846126da565b6123418884845a85604051806020016040528060008152506127dd565b6123d1565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f242432a9061239e908b908790879087906004016137a8565b600060405180830381600087803b1580156123b857600080fd5b505af11580156123cc573d6000803e3d6000fd5b505050505b6124cf565b86606001518060200190518101906123ee9190612fe1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90612447908b9087908690600401613751565b602060405180830381600087803b15801561246157600080fd5b505af1158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190613566565b6124cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613cae565b5050505050505050565b6124e4848383612d4b565b600182146125ea57600082815260056020526040908190205490517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690819063a9059cbb906125539087908690600401613782565b602060405180830381600087803b15801561256d57600080fd5b505af1158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a59190613566565b506125ae6119b7565b6125e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b506106be565b73ffffffffffffffffffffffffffffffffffffffff8316612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613bf4565b60008373ffffffffffffffffffffffffffffffffffffffff168260405161265d9061372d565b60006040518083038185875af1925050503d806000811461269a576040519150601f19603f3d011682016040523d82523d6000602084013e61269f565b606091505b505090508061090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546127139082612b6e565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546127639082612af3565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6127fc8573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156128b557818101518382015260200161289d565b50505050905090810190601f1680156128e25780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561290557600080fd5b5087f1158015612919573d6000803e3d6000fd5b50505050506040513d602081101561293057600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061426f603a913960400191505060405180910390fd5b600080825111612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180613ff26037913960400191505060405180910390fd5b81600183510381518110612a3957fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b60008160200183511015612aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806142a9603c913960400191505060405180910390fd5b50016020015190565b600082820183811015612b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082821115612bdf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000813f8015801590612b6757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b604080518082018252600281527f1901000000000000000000000000000000000000000000000000000000000000602080830191825283517f035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d47498183015230818601528451808203860181526060820190955284519490910193909320825160009491928692608001918291908083835b60208310612ce957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612cac565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152902054612d849082612b6e565b73ffffffffffffffffffffffffffffffffffffffff841660008181526020818152604080832087845282528083209490945583518681529081018590528351919333927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4505050565b60405180608001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600082601f830112612e44578081fd5b8135612e57612e5282613f09565b613ee5565b818152915060208083019084810181840286018201871015612e7857600080fd5b60005b84811015612e9757813584529282019290820190600101612e7b565b505050505092915050565b600082601f830112612eb2578081fd5b8135612ec0612e5282613f27565b9150808252836020828501011115612ed757600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612f00578081fd5b8151612f0e612e5282613f27565b9150808252836020828501011115612f2557600080fd5b612f36816020840160208601613f67565b5092915050565b600060808284031215612f4e578081fd5b6040516080810167ffffffffffffffff8282108183111715612f6c57fe5b81604052829350845183526020850151602084015260408501519150612f9182613f93565b8160408401526060850151915080821115612fab57600080fd5b50612fb885828601612ef0565b6060830152505092915050565b600060208284031215612fd6578081fd5b8135612b6781613f93565b600060208284031215612ff2578081fd5b8151612b6781613f93565b6000806040838503121561300f578081fd5b825161301a81613f93565b6020939093015192949293505050565b6000806040838503121561303c578182fd5b823561304781613f93565b9150602083013561305781613f93565b809150509250929050565b600080600080600060a08688031215613079578081fd5b853561308481613f93565b9450602086013561309481613f93565b9350604086013567ffffffffffffffff808211156130b0578283fd5b6130bc89838a01612e34565b945060608801359150808211156130d1578283fd5b6130dd89838a01612e34565b935060808801359150808211156130f2578283fd5b506130ff88828901612ea2565b9150509295509295909350565b600080600060608486031215613120578283fd5b833561312b81613f93565b9250602084013561313b81613f93565b929592945050506040919091013590565b600080600080600060a08688031215613163578081fd5b853561316e81613f93565b9450602086013561317e81613f93565b93506040860135925060608601359150608086013567ffffffffffffffff8111156131a7578182fd5b6130ff88828901612ea2565b60008060008060008060c087890312156131cb578384fd5b86356131d681613f93565b955060208701356131e681613f93565b9450604087013567ffffffffffffffff80821115613202578586fd5b61320e8a838b01612e34565b95506060890135915080821115613223578283fd5b61322f8a838b01612e34565b94506080890135915061324182613fb8565b90925060a08801359080821115613256578283fd5b5061326389828a01612ea2565b9150509295509295509295565b600080600080600060a08688031215613287578283fd5b853561329281613f93565b945060208601356132a281613f93565b9350604086013567ffffffffffffffff808211156130b0578485fd5b600080600080600060a086880312156132d5578283fd5b85356132e081613f93565b945060208601356132f081613f93565b9350604086013561330081613fb8565b9250606086013561331081613fb8565b9150608086013567ffffffffffffffff8111156131a7578182fd5b600080600060608486031215613120578081fd5b60008060008060008060c08789031215613357578384fd5b863561336281613f93565b9550602087013561337281613f93565b94506040870135935060608701359250608087013561339081613fb8565b915060a087013567ffffffffffffffff8111156133ab578182fd5b61326389828a01612ea2565b600080600080600060a08688031215613163578283fd5b600080604083850312156133e0578182fd5b82356133eb81613f93565b9150602083013561305781613fb8565b60008060008060808587031215613410578182fd5b843561341b81613f93565b935060208501359250604085013567ffffffffffffffff8082111561343e578384fd5b61344a88838901612ea2565b9350606087013591508082111561345f578283fd5b5061346c87828801612ea2565b91505092959194509250565b6000806040838503121561348a578182fd5b823561349581613f93565b946020939093013593505050565b600080604083850312156134b5578182fd5b823567ffffffffffffffff808211156134cc578384fd5b818501915085601f8301126134df578384fd5b81356134ed612e5282613f09565b80828252602080830192508086018a82838702890101111561350d578889fd5b8896505b8487101561353857803561352481613f93565b845260019690960195928101928101613511565b50909650870135935050508082111561354f578283fd5b5061355c85828601612e34565b9150509250929050565b600060208284031215613577578081fd5b8151612b6781613fb8565b600060208284031215613593578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612b67578182fd5b600080604083850312156135d4578182fd5b825167ffffffffffffffff808211156135eb578384fd5b6135f786838701612ef0565b9350602085015191508082111561360c578283fd5b5061355c85828601612ef0565b60006020828403121561362a578081fd5b815167ffffffffffffffff811115613640578182fd5b6119af84828501612f3d565b6000806040838503121561365e578182fd5b825167ffffffffffffffff80821115613675578384fd5b6135f786838701612f3d565b600060208284031215613692578081fd5b5035919050565b815160009082906020808601845b838110156136c3578151855293820193908201906001016136a7565b50929695505050505050565b600084516136e1818460208901613f67565b91909101928352506020820152604001919050565b60008451613708818460208901613f67565b82018481528351613720816020808501908801613f67565b0160200195945050505050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6020808252825182820181905260009190848201906040850190845b8181101561382557835183529284019291840191600101613809565b50909695505050505050565b901515815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252602d908201527f4d657461455243323057726170706572236465706f7369743a20494e434f525260408201527f4543545f4d53475f56414c554500000000000000000000000000000000000000606082015260800190565b6020808252602b908201527f4d657461455243323057726170706572236465706f7369743a20494e56414c4960408201527f445f524543495049454e54000000000000000000000000000000000000000000606082015260800190565b6020808252603c908201527f4d657461455243323057726170706572236f6e4552433131353552656365697660408201527f65643a20494e56414c49445f455243313135355f524543454956454400000000606082015260800190565b6020808252602c908201527f4d657461455243323057726170706572236465706f7369743a204e4f4e5f4e5560408201527f4c4c5f4d53475f56414c55450000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d657461455243323057726170706572236465706f7369743a205452414e534660408201527f45525f4641494c45440000000000000000000000000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461236d657461536166655472616e7366657246726f6d60408201527f3a20494e56414c49445f524543495049454e5400000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f5349474e415455524500000000000000000000000000606082015260800190565b60208082526041908201527f4d657461455243323057726170706572236f6e4552433131353542617463685260408201527f656365697665643a20494e56414c49445f455243313135355f5245434549564560608201527f4400000000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602c908201527f4d6574614552433230577261707065722377697468647261773a20494e56414c60408201527f49445f524543495049454e540000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4d657461455243323057726170706572236765744964416464726573733a205560408201527f4e524547495354455245445f544f4b454e000000000000000000000000000000606082015260800190565b60208082526032908201527f455243313135354d657461235f7472616e736665724761734665653a2045524360408201527f32305f5452414e534645525f4641494c45440000000000000000000000000000606082015260800190565b60208082526038908201527f455243313135354d657461236d6574615361666542617463685472616e73666560408201527f7246726f6d3a20494e56414c49445f524543495049454e540000000000000000606082015260800190565b6020808252602a908201527f4d6574614552433230577261707065722377697468647261773a205452414e5360408201527f4645525f4641494c454400000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4d65746145524332305772617070657223676574546f6b656e49443a20554e5260408201527f4547495354455245445f544f4b454e0000000000000000000000000000000000606082015260800190565b6020808252602f908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f4e4f4e43450000000000000000000000000000000000606082015260800190565b6020808252602e908201527f455243313135354d657461235f7472616e736665724761734665653a20554e5360408201527f5550504f525445445f544f4b454e000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715613f0157fe5b604052919050565b600067ffffffffffffffff821115613f1d57fe5b5060209081020190565b600067ffffffffffffffff821115613f3b57fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015613f82578181015183820152602001613f6a565b838111156106be5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114613fb557600080fd5b50565b8015158114613fb557600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245444552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f524551554952454445524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e455245524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f524551554952454445524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d4553534147454c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a264697066735822122044cddb091b71cd6a1f7302a3257892b47a563a3ef597c504d327af7d9ad101ff64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x1 PUSH1 0x3 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x0 DUP2 SWAP1 MSTORE PUSH32 0xABD6E7CB50984FF9C2F3E18A2660C3353DADF4E3291DEEB275DAE2CD1E44FE05 DUP2 SWAP1 SSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH32 0x1471EB6EB2C5E789FC3DE43F8CE62938C7D1836EC861730447E2ADA8FD81017B DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0x431A DUP1 PUSH2 0x87 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x147 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xF242432A GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x391 JUMPI DUP1 PUSH4 0xF5D4C820 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0xFA4E12D7 EQ PUSH2 0x3D1 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x371 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xBC197C81 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0xCE0B514B EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x331 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0xA3D4926E EQ PUSH2 0x2C4 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x7358E9A5 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x7358E9A5 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0x8340F549 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x9040A949 EQ PUSH2 0x28F JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x63F8071C EQ PUSH2 0x22F JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x1E2 JUMPI PUSH2 0x15A JUMP JUMPDEST CALLDATASIZE PUSH2 0x15A JUMPI PUSH2 0x158 PUSH1 0x1 CALLER CALLVALUE PUSH2 0x3F1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x17A CALLDATASIZE PUSH1 0x4 PUSH2 0x3478 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3EDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3582 JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3831 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC5 JUMP JUMPDEST PUSH2 0x7DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x1FD CALLDATASIZE PUSH1 0x4 PUSH2 0x3270 JUMP JUMPDEST PUSH2 0x806 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x222 PUSH2 0x21D CALLDATASIZE PUSH1 0x4 PUSH2 0x34A3 JUMP JUMPDEST PUSH2 0x911 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x37ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC5 JUMP JUMPDEST PUSH2 0xA5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26F PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x3681 JUMP JUMPDEST PUSH2 0xABA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3730 JUMP JUMPDEST PUSH2 0x158 PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x332B JUMP JUMPDEST PUSH2 0x3F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0xB16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x33CE JUMP JUMPDEST PUSH2 0xB1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x31B3 JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x2FF CALLDATASIZE PUSH1 0x4 PUSH2 0x3062 JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x38B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x333F JUMP JUMPDEST PUSH2 0xDF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x34C CALLDATASIZE PUSH1 0x4 PUSH2 0x310C JUMP JUMPDEST PUSH2 0xED2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x302A JUMP JUMPDEST PUSH2 0xEEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x38C CALLDATASIZE PUSH1 0x4 PUSH2 0x314C JUMP JUMPDEST PUSH2 0xF26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x3AC CALLDATASIZE PUSH1 0x4 PUSH2 0x33B7 JUMP JUMPDEST PUSH2 0xFA2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x32BE JUMP JUMPDEST PUSH2 0x10A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x3EC CALLDATASIZE PUSH1 0x4 PUSH2 0x33FB JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3943 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x1 EQ PUSH2 0x666 JUMPI CALLVALUE ISZERO PUSH2 0x49F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x39FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x4F5 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3751 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x523 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x547 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST POP PUSH2 0x550 PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0x586 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3A5A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x65C JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MSTORE PUSH1 0x4 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE MLOAD SWAP1 SWAP3 POP PUSH32 0xF977D54986414FC91816901629D1D788AD95448AB4198DCB9B6DC5ED2B930C1F SWAP1 PUSH2 0x64F SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH2 0x3782 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x660 JUMP JUMPDEST DUP1 SWAP2 POP JUMPDEST POP PUSH2 0x6A3 JUMP JUMPDEST CALLVALUE DUP3 EQ PUSH2 0x69F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x38E6 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST PUSH2 0x6BE DUP4 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x19EB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x78A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x7D6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x82F JUMPI POP PUSH2 0x82F DUP6 CALLER PUSH2 0xEEB JUMP JUMPDEST PUSH2 0x884 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x41BE PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x8F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x412F PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8FC DUP6 DUP6 DUP6 DUP6 PUSH2 0x1AA0 JUMP JUMPDEST PUSH2 0x90A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1DF4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x415F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x987 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9B1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9CF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xA1F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA42 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x9B7 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3DC5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3C51 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0xC02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D0B JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC0C PUSH2 0x2DF6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCBF DUP10 DUP6 PUSH32 0xA3D4926E8CF8FE8E020CD29F514C256BC2EEC62AA2337E415F1A33A4828AF5A0 PUSH1 0x0 SHL DUP13 DUP13 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC4A SWAP2 SWAP1 PUSH2 0x3699 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC71 SWAP2 SWAP1 PUSH2 0x3699 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH2 0xC93 JUMPI PUSH1 0x0 PUSH2 0xC96 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCAB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x2061 JUMP JUMPDEST SWAP1 POP PUSH2 0xCCD DUP10 DUP10 DUP10 DUP10 PUSH2 0x1AA0 JUMP JUMPDEST DUP5 ISZERO PUSH2 0xD10 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xCE7 SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0xD01 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x1DF4 JUMP JUMPDEST PUSH2 0xD0B DUP10 DUP4 PUSH2 0x2230 JUMP JUMPDEST PUSH2 0xD1E JUMP JUMPDEST PUSH2 0xD1E DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x1DF4 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0xD64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3B71 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xDC7 JUMPI PUSH2 0xD8C DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD7F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xABA JUMP JUMPDEST POP PUSH2 0xDBF ADDRESS DUP8 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD9E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xDB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x24D9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD67 JUMP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0xE40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3AB7 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE4A PUSH2 0x2DF6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE82 DUP10 DUP6 PUSH32 0xCE0B514B3931BDBE4D5D44E4F035AFE7113767B7DB71949271F6A62D9C60F558 DUP3 DUP13 DUP13 DUP13 DUP13 PUSH2 0xC93 JUMPI PUSH1 0x0 PUSH2 0xC96 JUMP JUMPDEST SWAP1 POP PUSH2 0xE90 DUP10 DUP10 DUP10 DUP10 PUSH2 0x26DA JUMP JUMPDEST DUP5 ISZERO PUSH2 0xEC4 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xEAA SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0xD01 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x27DD JUMP JUMPDEST PUSH2 0xD1E DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEDD DUP5 PUSH2 0xA5D JUMP JUMPDEST SWAP1 POP PUSH2 0x6BE CALLER DUP5 DUP4 DUP6 PUSH2 0x24D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0xF61 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x39A0 JUMP JUMPDEST PUSH2 0xF6A DUP5 PUSH2 0xABA JUMP JUMPDEST POP PUSH2 0xF77 ADDRESS DUP7 DUP7 DUP7 PUSH2 0x24D9 JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0xFCB JUMPI POP PUSH2 0xFCB DUP6 CALLER PUSH2 0xEEB JUMP JUMPDEST PUSH2 0x1020 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4029 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FC7 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1098 DUP6 DUP6 DUP6 DUP6 PUSH2 0x26DA JUMP JUMPDEST PUSH2 0x90A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1102 DUP7 DUP4 PUSH32 0xF5D4C820494C8595DE274C7FF619BEAD38AAC4FBC3D143B5BF956AA4B84FA524 DUP3 DUP10 DUP10 PUSH2 0x10DC JUMPI PUSH1 0x0 PUSH2 0x10DF JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP10 PUSH2 0x10EB JUMPI PUSH1 0x0 PUSH2 0x10EE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCAB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x387D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP12 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP10 ISZERO ISZERO OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP1 PUSH2 0x1196 SWAP1 DUP9 SWAP1 PUSH2 0x3831 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP3 ISZERO PUSH2 0x11CE JUMPI PUSH2 0x11AC PUSH2 0x2DF6 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x11C0 SWAP2 SWAP1 PUSH2 0x3619 JUMP JUMPDEST SWAP1 POP PUSH2 0x11CC DUP8 DUP3 PUSH2 0x2230 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x1231 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x41ED PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x129D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x418B PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A8 DUP4 PUSH2 0x29CE JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x5 DUP2 LT PUSH2 0x1306 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4088 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1317 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x132B JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1382 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40C2 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1390 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x14D3 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x13F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40F8 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x13FB DUP9 PUSH1 0x0 PUSH2 0x2A8B JUMP JUMPDEST SWAP3 POP PUSH2 0x1408 DUP9 PUSH1 0x20 PUSH2 0x2A8B JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x1417 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP4 POP PUSH1 0x1 DUP11 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1481 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 DUP2 AND SWAP2 AND EQ SWAP8 POP PUSH2 0x19AF SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x14E1 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1631 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x1541 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40F8 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x154C DUP9 PUSH1 0x0 PUSH2 0x2A8B JUMP JUMPDEST SWAP3 POP PUSH2 0x1559 DUP9 PUSH1 0x20 PUSH2 0x2A8B JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x1568 JUMPI INVALID JUMPDEST ADD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 DUP6 ADD MSTORE PUSH1 0x3C DUP1 DUP3 ADD DUP16 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x5C DUP3 ADD DUP1 DUP5 MSTORE DUP2 MLOAD SWAP2 DUP7 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP1 SWAP2 MSTORE PUSH1 0x7C DUP3 ADD DUP1 DUP5 MSTORE MSTORE PUSH1 0xF8 SWAP3 SWAP1 SWAP3 SHR PUSH1 0x9C DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xBC DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0xDC DUP4 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP1 SWAP7 POP PUSH1 0x1 SWAP3 PUSH1 0xFC DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1481 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x163F JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x17F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 DUP3 MSTORE DUP11 MLOAD PUSH1 0x44 DUP3 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP3 PUSH4 0x20C13B0B SWAP3 DUP14 SWAP3 DUP14 SWAP3 SWAP2 DUP3 SWAP2 PUSH1 0x24 DUP3 ADD SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16B5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x16FA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x172D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1715 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x175A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x178D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x19AF SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1805 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x195E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP13 DUP2 MSTORE PUSH1 0x24 DUP3 ADD SWAP3 DUP4 MSTORE DUP11 MLOAD PUSH1 0x44 DUP4 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP4 PUSH4 0x1626BA7E SWAP4 DUP16 SWAP4 DUP15 SWAP4 SWAP1 SWAP3 SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1895 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x187D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18C2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x190A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x19AF SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4088 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 RETURNDATASIZE DUP1 ISZERO PUSH2 0x19CE JUMPI PUSH1 0x20 DUP2 EQ PUSH2 0x19D7 JUMPI PUSH2 0x19E3 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x19E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x0 DUP1 RETURNDATACOPY PUSH1 0x0 MLOAD SWAP2 POP JUMPDEST POP ISZERO ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1A24 SWAP1 DUP4 PUSH2 0x2AF3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP8 DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x6BE PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x1AFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4053 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1CEC JUMPI PUSH2 0x1B8F DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B16 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1B6A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x2B6E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1BDB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x1C7D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C04 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1C58 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x2AF3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CC9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1AFF JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D99 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D81 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DD8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DC0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1E13 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2BE5 JUMP JUMPDEST ISZERO PUSH2 0x11CE JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1ECB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EB3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F0A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EF2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F46 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1F2E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F73 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1FAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4230 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP1 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2078 SWAP2 SWAP1 PUSH2 0x35C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x20B0 DUP4 PUSH1 0x41 PUSH2 0x2A8B JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x20C4 JUMPI POP DUP2 PUSH1 0x64 ADD DUP2 LT JUMPDEST PUSH2 0x20FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3E22 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2136 DUP7 DUP4 DUP8 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x211B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2C1C JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP7 DUP4 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x214F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x1 DUP8 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 SWAP4 POP SWAP1 SWAP2 PUSH32 0xB861B7BDBE611A846AB271B8D2810391BC8B5A968F390C322438ECAB66BCCF59 SWAP2 PUSH2 0x21DA SWAP2 PUSH2 0x3EDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x21EE DUP10 DUP4 DUP4 DUP9 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x2224 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3B14 JUMP JUMPDEST POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x223F DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x29CE JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x2 DUP2 LT PUSH2 0x227E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3E7F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x228F JUMPI INVALID JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP6 ADD MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x22C5 JUMPI DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x22C7 JUMP JUMPDEST CALLER JUMPDEST SWAP3 POP PUSH1 0x0 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22D7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x23D6 JUMPI DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x22F5 SWAP2 SWAP1 PUSH2 0x2FFD JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ ISZERO PUSH2 0x2346 JUMPI PUSH2 0x2324 DUP9 DUP5 DUP5 DUP5 PUSH2 0x26DA JUMP JUMPDEST PUSH2 0x2341 DUP9 DUP5 DUP5 GAS DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x27DD JUMP JUMPDEST PUSH2 0x23D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0xF242432A SWAP1 PUSH2 0x239E SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x37A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x24CF JUMP JUMPDEST DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x23EE SWAP2 SWAP1 PUSH2 0x2FE1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x2447 SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3751 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2475 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2499 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST PUSH2 0x24CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3CAE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x24E4 DUP5 DUP4 DUP4 PUSH2 0x2D4B JUMP JUMPDEST PUSH1 0x1 DUP3 EQ PUSH2 0x25EA JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP2 SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x2553 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3782 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x256D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2581 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25A5 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST POP PUSH2 0x25AE PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0x25E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D68 JUMP JUMPDEST POP PUSH2 0x6BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2637 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3BF4 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x265D SWAP1 PUSH2 0x372D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x269A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x269F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x90A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D68 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2713 SWAP1 DUP3 PUSH2 0x2B6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x2763 SWAP1 DUP3 PUSH2 0x2AF3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x27FC DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2BE5 JUMP JUMPDEST ISZERO PUSH2 0x11CE JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28B5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x289D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x28E2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x2919 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2930 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x426F PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x2A29 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF2 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x2A39 JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO PUSH2 0x2AEA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x42A9 PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2B67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x2BDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2B67 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD PUSH32 0x35AFF83D86937D35B32E04F0DDC6FF469290EEF2F1B692D8A815C89404D4749 DUP2 DUP4 ADD MSTORE ADDRESS DUP2 DUP7 ADD MSTORE DUP5 MLOAD DUP1 DUP3 SUB DUP7 ADD DUP2 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP6 MSTORE DUP5 MLOAD SWAP5 SWAP1 SWAP2 ADD SWAP4 SWAP1 SWAP4 KECCAK256 DUP3 MLOAD PUSH1 0x0 SWAP5 SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0x80 ADD SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2CE9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2CAC JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE SWAP3 ADD SWAP5 DUP6 MSTORE POP DUP4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP5 SUB DUP4 ADD DUP2 MSTORE SWAP3 DUP2 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2D84 SWAP1 DUP3 PUSH2 0x2B6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD SWAP2 SWAP4 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E44 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2E57 PUSH2 0x2E52 DUP3 PUSH2 0x3F09 JUMP JUMPDEST PUSH2 0x3EE5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x2E78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2E97 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E7B JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2EB2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2EC0 PUSH2 0x2E52 DUP3 PUSH2 0x3F27 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2ED7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2F00 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F0E PUSH2 0x2E52 DUP3 PUSH2 0x3F27 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2F25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F36 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F67 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F4E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x2F6C JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 SWAP4 POP DUP5 MLOAD DUP4 MSTORE PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH2 0x2F91 DUP3 PUSH2 0x3F93 JUMP JUMPDEST DUP2 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2FAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB8 DUP6 DUP3 DUP7 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FD6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B67 DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FF2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B67 DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x300F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x301A DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x303C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3047 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3057 DUP2 PUSH2 0x3F93 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3079 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3084 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3094 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x30B0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x30BC DUP10 DUP4 DUP11 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x30D1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x30DD DUP10 DUP4 DUP11 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x30F2 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x30FF DUP9 DUP3 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3120 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x312B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x313B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3163 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x316E DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x317E DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x30FF DUP9 DUP3 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x31CB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x31D6 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x31E6 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3202 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x320E DUP11 DUP4 DUP12 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3223 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x322F DUP11 DUP4 DUP12 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3241 DUP3 PUSH2 0x3FB8 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x3256 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3263 DUP10 DUP3 DUP11 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3287 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3292 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x32A2 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x30B0 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x32D5 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x32E0 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x32F0 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3300 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x3310 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3120 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3357 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3362 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3372 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3390 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33AB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3263 DUP10 DUP3 DUP11 ADD PUSH2 0x2EA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3163 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x33E0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x33EB DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3057 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3410 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x341B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x343E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x344A DUP9 DUP4 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x345F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x346C DUP8 DUP3 DUP9 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x348A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3495 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x34B5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x34CC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x34DF JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34ED PUSH2 0x2E52 DUP3 PUSH2 0x3F09 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x350D JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x3538 JUMPI DUP1 CALLDATALOAD PUSH2 0x3524 DUP2 PUSH2 0x3F93 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x3511 JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x354F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x355C DUP6 DUP3 DUP7 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3577 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B67 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3593 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x2B67 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x35D4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x35EB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x35F7 DUP7 DUP4 DUP8 ADD PUSH2 0x2EF0 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x360C JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x355C DUP6 DUP3 DUP7 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x362A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3640 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19AF DUP5 DUP3 DUP6 ADD PUSH2 0x2F3D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x365E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3675 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x35F7 DUP7 DUP4 DUP8 ADD PUSH2 0x2F3D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3692 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 DUP3 SWAP1 PUSH1 0x20 DUP1 DUP7 ADD DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x36C3 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x36A7 JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x36E1 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3F67 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 DUP4 MSTORE POP PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x3708 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3F67 JUMP JUMPDEST DUP3 ADD DUP5 DUP2 MSTORE DUP4 MLOAD PUSH2 0x3720 DUP2 PUSH1 0x20 DUP1 DUP6 ADD SWAP1 DUP9 ADD PUSH2 0x3F67 JUMP JUMPDEST ADD PUSH1 0x20 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3825 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3809 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A20494E434F5252 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4543545F4D53475F56414C554500000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A20494E56414C49 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x445F524543495049454E54000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236F6E45524331313535526563656976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x65643A20494E56414C49445F455243313135355F524543454956454400000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A204E4F4E5F4E55 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4C4C5F4D53475F56414C55450000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A205452414E5346 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x45525F4641494C45440000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D657461536166655472616E7366657246726F6D PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F524543495049454E5400000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F5349474E415455524500000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x41 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236F6E45524331313535426174636852 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656365697665643A20494E56414C49445F455243313135355F52454345495645 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6574614552433230577261707065722377697468647261773A20494E56414C PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x49445F524543495049454E540000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236765744964416464726573733A2055 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4E524547495354455245445F544F4B454E000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20455243 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x32305F5452414E534645525F4641494C45440000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D6574615361666542617463685472616E736665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7246726F6D3A20494E56414C49445F524543495049454E540000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6574614552433230577261707065722377697468647261773A205452414E53 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4645525F4641494C454400000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2F SWAP1 DUP3 ADD MSTORE PUSH32 0x4D65746145524332305772617070657223676574546F6B656E49443A20554E52 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4547495354455245445F544F4B454E0000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2F SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F4E4F4E43450000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20554E53 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x5550504F525445445F544F4B454E000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3F01 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3F1D JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3F3B JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F82 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F6A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x6BE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3FB5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD 0x4C PUSH10 0x62427974657323706F70 0x4C PUSH2 0x7374 TIMESTAMP PUSH26 0x74653A20475245415445525F5448414E5F5A45524F5F4C454E47 SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 SSTORE 0x4E MSTORE8 SSTORE POP POP 0x4F MSTORE SLOAD GASLIMIT DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4C 0x4C GASLIMIT SELFBALANCE COINBASE 0x4C 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F CODECOPY CALLDATACOPY 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E GASLIMIT MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F SLOAD 0x48 COINBASE 0x4E 0x5F ADDRESS 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT 0x4C PUSH10 0x62427974657323726561 PUSH5 0x4279746573 CALLER ORIGIN GASPRICE KECCAK256 SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F 0x4F MSTORE 0x5F GASLIMIT MLOAD SSTORE COINBASE 0x4C 0x5F SLOAD 0x4F 0x5F CALLER ORIGIN 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIFFICULTY 0xCD 0xDB MULMOD SHL PUSH18 0xCD6A1F7302A3257892B47A563A3EF597C504 0xD3 0x27 0xAF PUSH30 0x9AD101FF64736F6C63430007040033000000000000000000000000000000 ",
              "sourceMap": "746:9654:12:-:0;;;851:1;824:28;;1693:104;;;;;;;;;-1:-1:-1;953:3:12;1720:24;;;;;:33;;;1759:11;1720:24;1759:19;;:33;;-1:-1:-1;;;;;;1759:33:12;;;;;;746:9654;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:31906:33",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:33",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:622:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "133:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "142:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "149:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "135:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "135:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "135:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "112:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "120:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "108:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "108:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "127:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "104:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "104:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "94:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "193:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "180:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "180:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "170:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "209:78:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "279:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "233:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "233:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "218:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "218:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "209:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "296:16:33",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "307:5:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "300:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "328:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "335:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "321:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "321:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "321:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "351:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "361:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "355:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "385:5:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "392:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "381:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "381:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "404:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "419:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "427:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "415:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "415:15:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "408:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "489:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "498:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "501:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "491:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "491:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "491:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "453:6:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "465:6:33"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "473:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "461:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "461:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "449:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "449:28:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "479:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "445:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "445:37:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "484:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "442:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "442:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "439:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "514:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "523:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "518:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "582:118:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "603:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "621:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "608:12:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "608:17:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "596:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "596:30:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "596:30:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "639:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "650:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "655:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "646:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "646:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "639:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "671:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "682:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "687:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "678:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "678:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "671:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "544:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "541:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "541:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "555:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "557:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "566:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "569:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "562:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "562:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "557:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "537:3:33",
                                "statements": []
                              },
                              "src": "533:167:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "58:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "66:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "74:5:33",
                            "type": ""
                          }
                        ],
                        "src": "14:692:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "765:406:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "814:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "823:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "830:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "816:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "816:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "816:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "793:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "801:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "789:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "789:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "808:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "785:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "785:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "778:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "778:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "775:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "847:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "874:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "861:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "861:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "851:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "890:62:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "944:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "914:29:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "914:37:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "899:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "899:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "890:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "968:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "975:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "961:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "961:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "961:21:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1034:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1043:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1046:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1036:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1036:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1036:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1005:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1013:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1001:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1001:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1022:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "997:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "997:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1029:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "994:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "994:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "991:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "1076:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1083:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1072:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1072:16:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1094:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1102:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1090:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1090:17:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1109:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1059:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1059:57:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1059:57:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "1140:5:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1147:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1136:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1136:18:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1156:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1132:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1132:29:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1163:1:33",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1125:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1125:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1125:40:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "739:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "747:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "755:5:33",
                            "type": ""
                          }
                        ],
                        "src": "711:460:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1241:359:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1290:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1299:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1306:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1292:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1292:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1292:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1269:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1277:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1265:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1265:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1284:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1261:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1261:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1254:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1254:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1251:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1323:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1343:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1337:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1337:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1327:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1359:62:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1413:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "1383:29:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1383:37:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1368:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1368:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1359:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1437:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1444:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1430:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1430:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1430:21:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1503:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1512:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1515:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1505:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1505:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1505:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1474:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1482:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1470:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1470:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1491:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1466:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1466:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1498:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1463:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1463:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1460:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1554:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1562:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1550:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1550:17:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "1573:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1580:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1569:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1569:16:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1587:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1528:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1528:66:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1528:66:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1215:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1223:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1231:5:33",
                            "type": ""
                          }
                        ],
                        "src": "1176:424:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1686:731:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1730:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "1739:5:33"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "1746:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1732:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1732:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1732:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1707:3:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1712:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1703:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1703:19:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1724:4:33",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1699:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1699:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1696:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1763:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1783:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1777:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1777:9:33"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1767:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1795:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1817:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1825:4:33",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1813:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1813:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1799:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1839:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1849:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1843:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1926:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "1928:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1928:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1928:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1885:10:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1897:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1882:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1882:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1905:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1917:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1902:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1902:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1879:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1879:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1876:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1955:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1959:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1948:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1948:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1948:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1979:15:33",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1988:6:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1979:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2010:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2024:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "2018:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2018:16:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2003:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2003:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2003:32:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2055:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2063:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2051:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2051:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "2078:9:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2089:2:33",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2074:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2074:18:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "2068:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2068:25:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2044:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2044:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2044:50:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2103:40:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2128:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2139:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2124:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2124:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2118:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2118:25:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2107:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2179:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2152:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2152:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2152:35:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2207:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2215:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2203:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2203:15:33"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2220:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2196:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2196:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2196:32:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2237:39:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2261:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2272:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2257:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2257:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2251:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2251:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2241:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2303:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2312:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2315:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2305:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2305:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2305:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2291:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2299:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2288:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2288:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2285:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2339:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2347:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2335:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2335:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "2386:9:33"
                                          },
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2397:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2382:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2382:22:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "2406:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_bytes_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "2352:29:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2352:58:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2328:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2328:83:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2328:83:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_struct$_GasReceipt_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1657:9:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1668:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1676:5:33",
                            "type": ""
                          }
                        ],
                        "src": "1605:812:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2492:189:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2538:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2547:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2555:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2540:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2540:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2540:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2513:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2522:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2509:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2509:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2534:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2505:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2505:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2502:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2573:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2599:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2586:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2586:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2577:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2645:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2618:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2618:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2618:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2660:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2670:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2660:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2458:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2469:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2481:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2422:259:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2775:182:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2821:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2830:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2838:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2823:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2823:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2823:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2796:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2805:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2792:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2792:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2817:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2788:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2788:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2785:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2856:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2875:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2869:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2869:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2860:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2921:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2894:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2894:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2894:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2936:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2946:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2936:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2741:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2752:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2764:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2686:271:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3068:226:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3114:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3123:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3131:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3116:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3116:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3116:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3089:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3098:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3085:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3085:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3110:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3081:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3081:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3078:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3149:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3168:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3162:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3162:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3153:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3214:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3187:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3187:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3187:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3229:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3239:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3229:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3253:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3273:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3284:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3269:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3269:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3263:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3263:25:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3253:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3026:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3037:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3049:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3057:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2962:332:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3386:315:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3432:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3441:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3449:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3434:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3434:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3434:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3407:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3416:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3403:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3403:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3428:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3399:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3399:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3396:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3467:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3493:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3480:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3480:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3471:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3539:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3512:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3512:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3512:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3554:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3564:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3554:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3578:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3610:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3621:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3606:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3606:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3593:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3593:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3582:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3661:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3634:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3634:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3634:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3678:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3688:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3678:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3344:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3355:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3367:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3375:6:33",
                            "type": ""
                          }
                        ],
                        "src": "3299:402:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3911:932:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3958:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3967:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3975:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3960:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3960:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3960:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3932:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3941:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3928:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3928:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3953:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3924:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3924:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3921:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3993:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4019:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4006:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4006:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3997:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4065:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4038:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4038:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4038:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4080:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4090:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4080:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4104:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4136:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4147:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4132:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4132:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4119:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4119:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4108:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4187:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4160:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4160:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4160:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4204:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4214:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4204:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4230:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4261:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4272:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4257:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4257:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4244:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4244:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4234:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4285:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4295:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4289:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4340:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4349:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4357:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4342:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4342:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4342:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4328:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4336:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4325:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4325:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4322:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4375:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4424:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4435:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4420:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4420:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4444:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4385:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4385:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4375:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4461:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4494:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4505:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4490:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4490:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4477:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4477:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4465:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4538:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4547:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4555:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4540:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4540:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4540:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4524:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4534:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4521:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4521:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4518:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4573:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4622:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4633:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4618:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4618:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4644:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4583:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4583:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4573:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4661:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4694:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4705:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4690:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4690:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4677:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4677:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4665:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4739:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4748:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4756:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4741:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4741:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4741:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4725:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4735:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4722:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4722:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4719:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4774:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4807:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4818:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4803:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4803:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4829:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "4784:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4784:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4774:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address_payablet_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3845:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3856:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3868:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3876:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3884:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3892:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3900:6:33",
                            "type": ""
                          }
                        ],
                        "src": "3706:1137:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4960:366:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5006:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5015:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5023:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5008:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5008:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5008:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4981:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4990:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4977:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4977:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5002:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4973:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4973:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4970:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5041:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5067:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5054:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5054:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5045:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5113:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5086:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5086:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5086:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5128:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5138:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5128:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5152:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5184:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5195:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5180:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5180:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5167:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5167:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5156:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5235:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5208:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5208:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5208:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5252:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5262:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5252:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5278:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5305:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5316:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5301:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5301:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5288:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5288:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5278:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address_payablet_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4910:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4921:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4933:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4941:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4949:6:33",
                            "type": ""
                          }
                        ],
                        "src": "4848:478:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5486:613:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5533:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5542:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5550:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5535:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5535:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5535:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5507:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5516:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5503:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5503:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5528:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5499:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5499:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5496:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5568:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5594:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5581:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5581:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5572:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5640:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5613:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5613:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5613:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5655:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5665:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5655:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5679:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5711:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5722:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5707:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5707:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5694:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5694:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5683:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5762:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5735:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5735:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5735:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5779:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5789:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5779:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5805:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5832:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5843:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5828:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5828:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5815:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5815:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5805:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5856:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5883:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5894:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5879:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5879:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5866:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5866:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5856:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5907:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5938:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5949:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5934:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5934:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5921:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5921:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5911:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5997:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "6006:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "6014:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5999:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5999:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5999:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5969:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5977:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5966:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5966:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5963:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6032:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6065:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6076:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6061:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6061:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6085:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6042:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6042:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "6032:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address_payablet_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5420:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5431:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5443:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5451:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5459:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5467:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5475:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5331:768:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6315:1056:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6362:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6371:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6379:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6364:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6364:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6364:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6336:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6345:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6332:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6332:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6357:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6328:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6328:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6325:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6397:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6423:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6410:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6410:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6401:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6469:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6442:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6442:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6442:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6484:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6494:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6484:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6508:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6540:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6551:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6536:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6536:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6523:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6523:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6512:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6591:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6564:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6564:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6564:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6608:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "6618:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6608:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6634:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6665:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6676:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6661:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6661:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6648:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6648:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6638:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6689:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6699:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6693:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6744:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6753:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6761:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6746:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6746:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6746:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6732:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6740:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6729:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6729:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6726:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6779:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6828:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6839:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6824:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6824:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6848:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "6789:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6789:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6779:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6865:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6898:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6909:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6894:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6894:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6881:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6881:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6869:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6942:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "6951:6:33"
                                        },
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "6959:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6944:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6944:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6944:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6928:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6938:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6925:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6925:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6922:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6977:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7026:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7037:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7022:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7022:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7048:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "6987:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6987:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6977:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7065:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7097:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7108:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7093:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7093:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7080:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7080:33:33"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7069:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7146:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "7122:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7122:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7122:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7163:17:33",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "7173:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "7163:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7189:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7222:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7233:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7218:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7218:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7205:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7205:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7193:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7267:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "7276:6:33"
                                        },
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "7284:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7269:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7269:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7269:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7253:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7263:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7250:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7250:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7247:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7302:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7335:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7346:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7331:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7331:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7357:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7312:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7312:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "7302:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_boolt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6241:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6252:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6264:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6272:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6280:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6288:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "6296:6:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "6304:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6104:1267:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7573:932:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7620:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7629:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7637:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7622:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7622:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7622:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7594:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7603:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7590:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7590:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7615:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7586:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7586:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7583:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7655:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7681:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7668:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7668:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "7659:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7727:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7700:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7700:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7700:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7742:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7752:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7742:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7766:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7798:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7809:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7794:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7794:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7781:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7781:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7770:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7849:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7822:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7822:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7822:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7866:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "7876:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7866:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7892:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7923:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7934:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7919:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7919:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7906:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7906:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7896:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7947:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7957:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7951:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8002:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8011:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8019:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8004:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8004:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8004:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7990:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7998:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7987:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7987:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7984:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8037:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8086:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8097:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8082:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8082:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8106:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "8047:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8047:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8037:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8123:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8156:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8167:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8152:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8152:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8139:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8139:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8127:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8200:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8209:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8217:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8202:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8202:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8202:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8186:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8196:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8183:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8183:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8180:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8235:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8284:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8295:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8280:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8280:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8306:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "8245:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8245:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "8235:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8323:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8356:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8367:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8352:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8352:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8339:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8339:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8327:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8401:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8410:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8418:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8403:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8403:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8403:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "8387:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8397:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8384:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8384:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8381:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8436:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8469:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "8480:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8465:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8465:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8491:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "8446:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8446:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "8436:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7507:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7518:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7530:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7538:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7546:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7554:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7562:6:33",
                            "type": ""
                          }
                        ],
                        "src": "7376:1129:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8651:757:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8698:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8707:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8715:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8700:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8700:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8700:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8672:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8681:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8668:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8668:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8693:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8664:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8664:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8661:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8733:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8759:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8746:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8746:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8737:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8805:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8778:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8778:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8778:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8820:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8830:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8820:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8844:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8876:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8887:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8872:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8872:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8859:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8859:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8848:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8927:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8900:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8900:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8900:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8944:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "8954:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8944:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8970:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9002:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9013:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8998:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8998:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8985:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8985:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "8974:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9050:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "9026:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9026:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9026:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9067:17:33",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "9077:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9067:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9093:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9125:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9136:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9121:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9121:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9108:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9108:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "9097:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "9173:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "9149:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9149:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9149:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9190:17:33",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "9200:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "9190:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9216:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9247:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9258:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9243:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9243:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9230:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9230:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9220:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9306:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "9315:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "9323:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9308:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9308:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9308:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9278:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9286:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9275:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9275:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9272:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9341:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9374:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9385:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9370:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9370:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9394:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9351:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9351:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "9341:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_boolt_boolt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8585:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8596:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8608:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8616:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8624:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8632:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "8640:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8510:898:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9517:366:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9563:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9572:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9580:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9565:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9565:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9565:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9538:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9547:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9534:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9534:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9559:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9530:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9530:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9527:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9598:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9624:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9611:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9611:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9602:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9670:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9643:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9643:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9643:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9685:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9695:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9685:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9709:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9741:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9752:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9737:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9737:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9724:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9724:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9713:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9792:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9765:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9765:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9765:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9809:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "9819:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9809:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9835:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9862:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9873:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9858:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9858:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9845:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9845:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9835:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9467:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9478:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9490:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9498:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9506:6:33",
                            "type": ""
                          }
                        ],
                        "src": "9413:470:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10049:737:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10096:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10105:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10113:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10098:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10098:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10098:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10070:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10079:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10066:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10066:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10091:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10062:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10062:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10059:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10131:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10157:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10144:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10144:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10135:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10203:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10176:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10176:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10176:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10218:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10228:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10218:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10242:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10274:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10285:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10270:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10270:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10257:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10257:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10246:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10325:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10298:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10298:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10298:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10342:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "10352:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10342:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10368:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10395:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10406:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10391:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10391:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10378:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10378:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "10368:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10419:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10446:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10457:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10442:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10442:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10429:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10429:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "10419:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10470:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10502:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10513:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10498:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10498:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10485:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10485:33:33"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10474:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10551:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "10527:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10527:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10527:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10568:17:33",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "10578:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "10568:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10594:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10625:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10636:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10621:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10621:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10608:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10608:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "10598:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10684:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "10693:6:33"
                                        },
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "10701:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10686:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10686:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10686:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10656:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10664:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10653:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10653:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10650:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10719:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10752:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10763:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10748:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10748:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10772:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "10729:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10729:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "10719:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_boolt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9975:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9986:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9998:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10006:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10014:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10022:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "10030:6:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "10038:6:33",
                            "type": ""
                          }
                        ],
                        "src": "9888:898:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10938:613:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10985:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10994:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "11002:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10987:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10987:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10987:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10959:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10968:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10955:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10955:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10980:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10951:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10951:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10948:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11020:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11046:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11033:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11033:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11024:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11092:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11065:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11065:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11065:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11107:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11117:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11107:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11131:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11163:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11174:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11159:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11159:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11146:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11146:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11135:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11214:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11187:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11187:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11187:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11231:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "11241:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11231:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11257:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11284:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11295:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11280:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11280:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11267:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11267:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11257:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11308:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11335:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11346:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11331:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11331:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11318:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11318:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "11308:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11359:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11390:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11401:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11386:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11386:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11373:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11373:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11363:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11449:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "11458:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "11466:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11451:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11451:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11451:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11421:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11429:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11418:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11418:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11415:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11484:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11517:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "11528:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11513:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11513:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11537:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "11494:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11494:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "11484:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10872:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10883:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10895:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10903:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10911:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10919:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "10927:6:33",
                            "type": ""
                          }
                        ],
                        "src": "10791:760:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11640:312:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11686:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11695:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11703:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11688:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11688:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11688:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11661:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11670:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11657:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11657:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11682:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11653:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11653:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11650:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11721:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11747:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11734:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11734:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11725:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11793:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "11766:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11766:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11766:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11808:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11818:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11808:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11832:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11864:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11875:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11860:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11860:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11847:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11847:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11836:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11912:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "11888:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11888:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11888:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11929:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "11939:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11929:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11598:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11609:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11621:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "11629:6:33",
                            "type": ""
                          }
                        ],
                        "src": "11556:396:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12096:640:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12143:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "12152:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "12160:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12145:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12145:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12145:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12117:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12126:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12113:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12113:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12138:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12109:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12109:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12106:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12178:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12204:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12191:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12191:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12182:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12250:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12223:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12223:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12223:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12265:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12275:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12265:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12289:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12316:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12327:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12312:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12312:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12299:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12299:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12289:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12340:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12371:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12382:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12367:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12367:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12354:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12354:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12344:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12395:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12405:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12399:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12450:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "12459:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "12467:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12452:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12452:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12452:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12438:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12446:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12435:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12435:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12432:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12485:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12518:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "12529:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12514:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12514:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12538:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "12495:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12495:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "12485:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12555:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12588:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12599:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12584:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12584:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12571:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12571:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12559:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12632:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "12641:6:33"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "12649:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12634:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12634:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12634:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12618:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12628:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12615:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12615:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12612:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12667:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12700:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12711:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12696:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12696:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12722:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "12677:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12677:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "12667:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes32t_bytes_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12038:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12049:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12061:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12069:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "12077:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "12085:6:33",
                            "type": ""
                          }
                        ],
                        "src": "11957:779:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12828:240:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12874:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12883:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12891:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12876:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12876:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12876:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12849:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12858:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12845:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12845:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12870:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12841:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12841:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12838:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12909:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12935:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12922:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12922:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "12913:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12981:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "12954:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12954:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12954:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12996:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13006:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12996:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13020:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13047:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13058:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13043:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13043:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13030:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13030:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13020:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12786:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12797:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12809:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12817:6:33",
                            "type": ""
                          }
                        ],
                        "src": "12741:327:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13210:1178:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13256:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13265:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13273:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13258:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13258:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13258:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13231:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13240:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13227:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13227:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13252:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13223:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13223:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13220:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13291:37:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13318:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13305:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13305:23:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "13295:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13337:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13347:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13341:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13392:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13401:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13409:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13394:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13394:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13394:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13380:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13388:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13377:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13377:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13374:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13427:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13441:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13452:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13437:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13437:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "13431:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13507:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13516:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13524:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13509:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13509:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13509:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "13486:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "13490:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13482:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13482:13:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13497:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "13478:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13478:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "13471:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13471:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13468:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13542:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13569:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13556:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13556:16:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "13546:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13581:80:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "13653:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "13607:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13607:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13592:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13592:69:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "13585:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13670:16:33",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "13683:3:33"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13674:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "13702:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13707:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13695:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13695:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13695:19:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13723:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13733:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "13727:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13746:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "13757:3:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "13762:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13753:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13753:12:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "13746:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13774:22:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "13789:2:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "13793:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13785:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13785:11:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "13778:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13855:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13864:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13872:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13857:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13857:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13857:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "13819:2:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "13827:6:33"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "13835:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "13823:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "13823:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13815:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13815:24:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "13841:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13811:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13811:33:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13846:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13808:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13808:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13805:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13890:15:33",
                              "value": {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "13899:6:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "13894:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13963:195:33",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "13977:30:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "14003:3:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "13990:12:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13990:17:33"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "13981:5:33",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "14047:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "validator_revert_t_address",
                                        "nodeType": "YulIdentifier",
                                        "src": "14020:26:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14020:33:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14020:33:33"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "14073:3:33"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "14078:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14066:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14066:18:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14066:18:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14097:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "14108:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "14113:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14104:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14104:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "14097:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14129:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "14140:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "14145:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14136:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14136:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "14129:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "13925:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13928:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13922:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13922:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "13936:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13938:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "13947:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13950:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13943:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13943:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "13938:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "13918:3:33",
                                "statements": []
                              },
                              "src": "13914:244:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14167:15:33",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "14177:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14167:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14191:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14224:9:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "14235:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14220:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14220:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14207:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14207:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14195:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14268:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14277:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14285:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14270:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14270:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14270:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14254:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14264:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14251:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14251:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "14248:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14303:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14352:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14363:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14348:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14348:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "14374:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "14313:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14313:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14303:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13168:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13179:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13191:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13199:6:33",
                            "type": ""
                          }
                        ],
                        "src": "13073:1315:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14471:179:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14517:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14526:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14534:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14519:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14519:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14519:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14492:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14501:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14488:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14488:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14513:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14484:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14484:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "14481:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14552:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14571:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14565:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14565:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "14556:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "14614:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "14590:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14590:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14590:30:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14629:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14639:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14629:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14437:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14448:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14460:6:33",
                            "type": ""
                          }
                        ],
                        "src": "14393:257:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14724:283:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14770:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14779:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14787:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14772:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14772:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14772:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14745:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14754:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14741:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14741:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14766:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14737:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14737:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "14734:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14805:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14831:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14818:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14818:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "14809:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14951:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14960:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "14968:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14953:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14953:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14953:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "14863:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "14874:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "14881:66:33",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "14870:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14870:78:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "14860:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14860:89:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "14853:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14853:97:33"
                              },
                              "nodeType": "YulIf",
                              "src": "14850:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14986:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14996:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14986:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14690:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14701:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14713:6:33",
                            "type": ""
                          }
                        ],
                        "src": "14655:352:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15128:476:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15174:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15183:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15191:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15176:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15176:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15176:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15149:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15158:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15145:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15145:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15170:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15141:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15141:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "15138:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15209:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15229:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15223:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15223:16:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15213:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15248:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15258:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15252:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15303:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15312:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15320:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15305:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15305:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15305:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15291:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15299:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15288:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15288:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "15285:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15338:72:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15382:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15393:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15378:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15378:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15402:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "15348:29:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15348:62:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15338:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15419:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15445:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15456:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15441:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15441:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15435:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15435:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15423:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15489:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "15498:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "15506:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15491:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15491:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15491:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15475:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15485:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15472:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15472:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "15469:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15524:74:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15568:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15579:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15564:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15564:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15590:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "15534:29:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15534:64:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "15524:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15086:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15097:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15109:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15117:6:33",
                            "type": ""
                          }
                        ],
                        "src": "15012:592:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15718:280:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15764:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15773:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15781:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15766:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15766:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15766:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15739:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15748:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15735:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15735:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15760:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15731:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15731:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "15728:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15799:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15819:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15813:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15813:16:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15803:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15872:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15881:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "15889:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15874:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15874:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15874:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15844:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15852:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15841:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15841:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "15838:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15907:85:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15964:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15975:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15960:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15960:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15984:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_struct$_GasReceipt_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "15917:42:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15917:75:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15907:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15684:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15695:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15707:6:33",
                            "type": ""
                          }
                        ],
                        "src": "15609:389:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16138:489:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16184:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16193:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16201:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16186:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16186:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16186:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16159:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16168:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16155:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16155:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16180:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16151:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16151:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "16148:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16219:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16239:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16233:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16233:16:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "16223:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16258:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16268:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16262:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16313:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16322:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16330:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16315:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16315:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16315:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "16301:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16309:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16298:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16298:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "16295:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16348:85:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16405:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "16416:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16401:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16401:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "16425:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_struct$_GasReceipt_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "16358:42:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16358:75:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16348:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16442:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16468:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16479:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16464:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16464:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16458:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16458:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16446:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16512:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16521:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16529:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16514:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16514:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16514:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16498:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16508:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16495:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16495:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "16492:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16547:74:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16591:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16602:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16587:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16587:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "16613:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "16557:29:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16557:64:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "16547:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptrt_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16096:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16107:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16119:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16127:6:33",
                            "type": ""
                          }
                        ],
                        "src": "16003:624:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16702:120:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16748:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16757:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "16765:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16750:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16750:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16750:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16723:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16732:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16719:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16719:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16744:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16715:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16715:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "16712:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16783:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16806:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16793:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16793:23:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16783:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16668:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16679:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16691:6:33",
                            "type": ""
                          }
                        ],
                        "src": "16632:190:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16996:376:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17006:16:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "17019:3:33"
                              },
                              "variables": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17010:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17031:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17051:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17045:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17045:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "17035:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17067:12:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "17076:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "17067:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17088:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17098:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17092:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17111:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17129:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17137:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17125:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17125:15:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "17115:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17149:12:33",
                              "value": {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "17158:3:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "17153:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17219:126:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "17240:5:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "17253:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "17247:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17247:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "17233:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17233:28:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17233:28:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "17274:23:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "17287:5:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "17294:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "17283:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17283:14:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17274:5:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "17310:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "17324:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "17332:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "17320:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17320:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17310:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "17181:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "17184:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17178:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17178:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "17192:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "17194:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "17203:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17206:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "17199:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17199:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "17194:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "17174:3:33",
                                "statements": []
                              },
                              "src": "17170:175:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17354:12:33",
                              "value": {
                                "name": "pos_1",
                                "nodeType": "YulIdentifier",
                                "src": "17361:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "17354:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "16972:3:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16977:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "16988:3:33",
                            "type": ""
                          }
                        ],
                        "src": "16827:545:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17570:244:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17580:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17600:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17594:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17594:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "17584:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "17642:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17650:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17638:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17638:17:33"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "17657:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "17662:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "17616:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17616:53:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17616:53:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17678:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "17695:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "17700:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17691:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17691:16:33"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17682:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17723:5:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17730:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17716:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17716:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17716:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17757:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17764:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17753:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17753:16:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "17771:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17746:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17746:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17746:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17787:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17798:5:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17805:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17794:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17794:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "17787:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes32__to_t_bytes_memory_ptr_t_uint256_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "17530:3:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17535:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17543:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17551:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "17562:3:33",
                            "type": ""
                          }
                        ],
                        "src": "17377:437:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18030:335:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18040:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18060:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18054:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18054:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "18044:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18102:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18110:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18098:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18098:17:33"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "18117:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18122:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "18076:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18076:53:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18076:53:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18138:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "18155:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "18160:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18151:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18151:16:33"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18142:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18183:5:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18190:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18176:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18176:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18176:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18206:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "18228:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18222:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18222:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18210:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18270:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18278:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18266:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18266:17:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18289:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18296:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18285:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18285:16:33"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18303:8:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "18244:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18244:68:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18244:68:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18321:38:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18336:5:33"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18343:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18332:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18332:20:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18354:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18328:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18328:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "18321:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "17990:3:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17995:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18003:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18011:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "18022:3:33",
                            "type": ""
                          }
                        ],
                        "src": "17819:546:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18561:14:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18563:10:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "18570:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "18563:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "18545:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "18553:3:33",
                            "type": ""
                          }
                        ],
                        "src": "18370:205:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18681:125:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18691:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18703:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18714:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18699:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18699:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18691:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18733:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "18748:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18756:42:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18744:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18744:55:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18726:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18726:74:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18726:74:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18650:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18661:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18672:4:33",
                            "type": ""
                          }
                        ],
                        "src": "18580:226:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18984:241:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18994:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19006:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19017:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19002:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19002:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18994:4:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19029:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19039:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19033:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19097:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19112:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19120:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19108:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19108:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19090:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19090:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19090:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19144:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19155:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19140:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19140:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19164:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19172:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19160:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19160:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19133:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19133:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19133:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19196:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19207:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19192:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19192:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "19212:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19185:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19185:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19185:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_address_payable_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18937:9:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18948:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18956:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18964:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18975:4:33",
                            "type": ""
                          }
                        ],
                        "src": "18811:414:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19367:168:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19377:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19389:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19400:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19385:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19385:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19377:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19419:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19434:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19442:42:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19430:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19430:55:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19412:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19412:74:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19412:74:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19506:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19517:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19502:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19502:18:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19522:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19495:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19495:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19495:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19328:9:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19339:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19347:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19358:4:33",
                            "type": ""
                          }
                        ],
                        "src": "19230:305:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19697:241:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "19707:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19719:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19730:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19715:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19715:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19707:4:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19742:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19752:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19746:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19810:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "19825:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19833:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19821:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19821:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19803:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19803:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19803:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19857:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19868:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19853:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19853:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19877:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19885:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19873:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19873:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19846:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19846:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19846:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19909:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19920:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19905:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19905:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "19925:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19898:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19898:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19898:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19650:9:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19661:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19669:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19677:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19688:4:33",
                            "type": ""
                          }
                        ],
                        "src": "19540:398:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20228:368:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20238:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "20248:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20242:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20306:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20321:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20329:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20317:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20317:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20299:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20299:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20299:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20353:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20364:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20349:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20349:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20373:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20381:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20369:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20369:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20342:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20342:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20342:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20405:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20416:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20401:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20401:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "20421:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20394:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20394:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20394:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20448:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20459:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20444:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20444:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "20464:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20437:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20437:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20437:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20491:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20502:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20487:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20487:19:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20508:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20480:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20480:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20480:32:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20532:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20543:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20528:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20528:19:33"
                                  },
                                  {
                                    "name": "tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "20549:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20521:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20521:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20521:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20563:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20575:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20586:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20571:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20571:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20563:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20173:9:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "20184:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20192:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20200:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20208:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20219:4:33",
                            "type": ""
                          }
                        ],
                        "src": "19943:653:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20730:168:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20740:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20752:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20763:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20748:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20748:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20740:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20782:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "20797:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20805:42:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "20793:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20793:55:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20775:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20775:74:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20775:74:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20869:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20880:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20865:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20865:18:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20885:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20858:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20858:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20858:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20691:9:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20702:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20710:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20721:4:33",
                            "type": ""
                          }
                        ],
                        "src": "20601:297:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21054:484:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21064:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "21074:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21068:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21085:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21103:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21114:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21099:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21099:18:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21089:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21133:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21144:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21126:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21126:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21126:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21156:17:33",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "21167:6:33"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "21160:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21182:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21202:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21196:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21196:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "21186:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21225:6:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "21233:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21218:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21218:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21218:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21249:25:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21260:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21271:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21256:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21256:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "21249:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21283:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21301:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21309:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21297:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21297:15:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "21287:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21321:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "21330:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "21325:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21392:120:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "21413:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "21424:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "21418:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "21418:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21406:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21406:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21406:26:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "21445:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "21456:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "21461:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "21452:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21452:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "21445:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "21477:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "21491:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "21499:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "21487:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21487:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21477:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "21354:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "21357:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21351:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21351:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "21365:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "21367:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "21376:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21379:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "21372:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21372:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "21367:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "21347:3:33",
                                "statements": []
                              },
                              "src": "21343:169:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21521:11:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "21529:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21521:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21023:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21034:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21045:4:33",
                            "type": ""
                          }
                        ],
                        "src": "20903:635:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21638:92:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21648:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21660:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21671:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21656:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21656:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21648:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21690:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "21715:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "21708:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21708:14:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "21701:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21701:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21683:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21683:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21683:41:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21607:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21618:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21629:4:33",
                            "type": ""
                          }
                        ],
                        "src": "21543:187:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21976:373:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21986:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21998:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22009:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21994:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21994:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21986:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22029:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "22040:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22022:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22022:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22022:25:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22056:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22066:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22060:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22128:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22139:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22124:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22124:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22148:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22156:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22144:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22144:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22117:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22117:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22117:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22180:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22191:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22176:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22176:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22200:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22208:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22196:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22196:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22169:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22169:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22169:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22232:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22243:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22228:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22228:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "22248:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22221:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22221:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22221:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22275:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22286:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22271:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22271:19:33"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "22292:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22264:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22264:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22264:35:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22319:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22330:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22315:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22315:19:33"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "22336:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22308:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22308:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22308:35:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21905:9:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "21916:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "21924:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "21932:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "21940:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "21948:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21956:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21967:4:33",
                            "type": ""
                          }
                        ],
                        "src": "21735:614:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22567:329:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "22577:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22589:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22600:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22585:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22585:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "22577:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22620:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "22631:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22613:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22613:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22613:25:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22647:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22657:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22651:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22719:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22730:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22715:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22715:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22739:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22747:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22735:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22735:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22708:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22708:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22708:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22771:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22782:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22767:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22767:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22791:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "22799:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22787:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22787:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22760:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22760:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22760:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22823:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22834:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22819:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22819:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "22839:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22812:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22812:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22812:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22866:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22877:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22862:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22862:19:33"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "22883:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22855:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22855:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22855:35:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22504:9:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "22515:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "22523:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "22531:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "22539:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22547:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "22558:4:33",
                            "type": ""
                          }
                        ],
                        "src": "22354:542:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23142:373:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23152:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23164:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23175:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23160:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23160:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23152:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23195:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "23206:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23188:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23188:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23188:25:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23222:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23232:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "23226:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23294:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23305:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23290:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23290:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23314:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23322:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23310:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23310:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23283:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23283:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23283:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23346:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23357:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23342:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23342:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "23366:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "23374:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23362:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23362:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23335:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23335:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23335:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23398:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23409:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23394:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23394:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "23414:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23387:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23387:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23387:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23441:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23452:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23437:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23437:19:33"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "23458:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23430:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23430:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23430:35:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23485:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23496:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23481:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23481:19:33"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "23502:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23474:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23474:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23474:35:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23071:9:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "23082:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "23090:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "23098:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "23106:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "23114:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23122:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23133:4:33",
                            "type": ""
                          }
                        ],
                        "src": "22901:614:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23619:149:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "23629:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23641:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23652:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "23637:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23637:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "23629:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23671:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "23686:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "23694:66:33",
                                        "type": "",
                                        "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "23682:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23682:79:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23664:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23664:98:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23664:98:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23588:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "23599:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23610:4:33",
                            "type": ""
                          }
                        ],
                        "src": "23520:248:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "23947:235:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "23964:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "23975:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23957:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23957:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23957:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "23998:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24009:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23994:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23994:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24014:2:33",
                                    "type": "",
                                    "value": "45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "23987:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23987:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "23987:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24037:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24048:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24033:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24033:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24053:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#deposit: INCORR"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24026:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24026:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24026:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24108:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24119:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24104:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24104:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24124:15:33",
                                    "type": "",
                                    "value": "ECT_MSG_VALUE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24097:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24097:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24097:43:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24149:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24161:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24172:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24157:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24157:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24149:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_18ab744e6275fc2611ea3f469ab0998d462afdc8fb55fa1f0baa2f290c1dd8e8__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "23924:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "23938:4:33",
                            "type": ""
                          }
                        ],
                        "src": "23773:409:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24361:233:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24378:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24389:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24371:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24371:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24371:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24412:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24423:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24408:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24408:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24428:2:33",
                                    "type": "",
                                    "value": "43"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24401:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24401:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24401:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24451:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24462:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24447:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24447:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24467:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#deposit: INVALI"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24440:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24440:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24440:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24522:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24533:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24518:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24518:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24538:13:33",
                                    "type": "",
                                    "value": "D_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24511:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24511:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24511:41:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24561:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24573:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24584:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24569:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24569:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24561:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_19a3130b3f25d805cc5717b6ec577f621b2eda36caf4381b0de60002320d245d__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24338:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24352:4:33",
                            "type": ""
                          }
                        ],
                        "src": "24187:407:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "24773:250:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "24790:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24801:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24783:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24783:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24783:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24824:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24835:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24820:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24820:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "24840:2:33",
                                    "type": "",
                                    "value": "60"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24813:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24813:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24813:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24863:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24874:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24859:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24859:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24879:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#onERC1155Receiv"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24852:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24852:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24852:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "24934:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "24945:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24930:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24930:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "24950:30:33",
                                    "type": "",
                                    "value": "ed: INVALID_ERC1155_RECEIVED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24923:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24923:58:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24923:58:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "24990:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25002:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25013:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "24998:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24998:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "24990:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_298f8b1a7d09e54e9ad5dfd1b230710353cd7e0c23bec42e628b01c9bef64671__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "24750:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "24764:4:33",
                            "type": ""
                          }
                        ],
                        "src": "24599:424:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25202:234:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25219:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25230:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25212:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25212:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25212:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25253:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25264:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25249:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25249:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25269:2:33",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25242:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25242:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25242:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25292:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25303:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25288:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25288:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25308:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#deposit: NON_NU"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25281:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25281:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25281:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25363:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25374:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25359:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25359:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25379:14:33",
                                    "type": "",
                                    "value": "LL_MSG_VALUE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25352:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25352:42:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25352:42:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25403:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25415:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25426:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25411:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25411:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25403:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_52e2325dc5a388253b111b94bbca717f4138da2fa7211fcfb41ba013239fcc9e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25179:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25193:4:33",
                            "type": ""
                          }
                        ],
                        "src": "25028:408:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25615:231:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25632:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25643:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25625:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25625:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25625:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25666:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25677:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25662:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25662:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25682:2:33",
                                    "type": "",
                                    "value": "41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25655:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25655:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25655:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25705:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25716:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25701:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25701:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25721:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#deposit: TRANSF"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25694:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25694:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25694:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25776:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "25787:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "25772:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25772:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "25792:11:33",
                                    "type": "",
                                    "value": "ER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "25765:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25765:39:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "25765:39:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25813:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "25825:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25836:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25821:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25821:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "25813:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_60c012ac410bc331a9c5c1e4b0a28751cc566065127914b00b9ee80212c2c0ff__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25592:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "25606:4:33",
                            "type": ""
                          }
                        ],
                        "src": "25441:405:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26025:241:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26042:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26053:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26035:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26035:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26035:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26076:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26087:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26072:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26072:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26092:2:33",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26065:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26065:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26065:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26115:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26126:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26111:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26111:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26131:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#metaSafeTransferFrom"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26104:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26104:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26104:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26186:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26197:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26182:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26182:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26202:21:33",
                                    "type": "",
                                    "value": ": INVALID_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26175:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26175:49:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26175:49:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26233:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26245:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26256:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26241:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26241:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26233:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_61f5777e4201d0cacc6b01e4df7af612fe611d3e31e7f11d609bf3a8c318735e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26002:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26016:4:33",
                            "type": ""
                          }
                        ],
                        "src": "25851:415:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26445:241:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26462:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26473:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26455:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26455:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26455:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26496:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26507:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26492:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26492:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26512:2:33",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26485:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26485:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26485:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26535:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26546:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26531:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26531:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26551:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_signatureValidation"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26524:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26524:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26524:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26606:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26617:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26602:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26602:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26622:21:33",
                                    "type": "",
                                    "value": ": INVALID_SIGNATURE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26595:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26595:49:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26595:49:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26653:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26665:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26676:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26661:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26661:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "26653:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d3eb5c55a58dcdb83f34d1ad1e9a04e3cf6fabf83d70f1a41fc7973311b6fd4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26422:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26436:4:33",
                            "type": ""
                          }
                        ],
                        "src": "26271:415:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26865:295:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26882:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26893:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26875:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26875:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26875:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26916:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26927:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26912:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26912:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26932:2:33",
                                    "type": "",
                                    "value": "65"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26905:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26905:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26905:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26955:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "26966:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "26951:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26951:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "26971:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#onERC1155BatchR"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "26944:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26944:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "26944:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27026:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27037:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27022:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27022:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27042:34:33",
                                    "type": "",
                                    "value": "eceived: INVALID_ERC1155_RECEIVE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27015:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27015:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27015:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27097:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27108:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27093:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27093:19:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27114:3:33",
                                    "type": "",
                                    "value": "D"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27086:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27086:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27086:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27127:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27139:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27150:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27135:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27135:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27127:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_7f7fa389c177bc9787ac2c6dd7e77b288a431fbd01f0543daeaf9e12dd96ceb6__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26842:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "26856:4:33",
                            "type": ""
                          }
                        ],
                        "src": "26691:469:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27339:234:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27356:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27367:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27349:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27349:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27349:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27390:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27401:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27386:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27386:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27406:2:33",
                                    "type": "",
                                    "value": "44"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27379:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27379:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27379:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27429:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27440:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27425:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27425:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27445:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#withdraw: INVAL"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27418:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27418:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27418:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27500:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27511:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27496:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27496:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27516:14:33",
                                    "type": "",
                                    "value": "ID_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27489:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27489:42:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27489:42:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27540:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27552:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27563:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27548:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27548:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27540:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a3ff64274638dcdb2ba8a07eb1491f949b7ab0bfeb2b25cede5a4a3c65ef7065__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27316:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27330:4:33",
                            "type": ""
                          }
                        ],
                        "src": "27165:408:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27752:239:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27769:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27780:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27762:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27762:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27762:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27803:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27814:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27799:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27799:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27819:2:33",
                                    "type": "",
                                    "value": "49"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27792:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27792:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27792:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27842:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27853:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27838:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27838:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27858:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#getIdAddress: U"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27831:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27831:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27831:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27913:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27924:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "27909:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27909:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "27929:19:33",
                                    "type": "",
                                    "value": "NREGISTERED_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27902:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27902:47:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27902:47:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27958:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27970:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27981:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27966:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27966:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "27958:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a400c79cc9e4d63fe5f7c90f141f667cd9b84b276de2c465e0102adb91057b61__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "27729:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "27743:4:33",
                            "type": ""
                          }
                        ],
                        "src": "27578:413:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28170:240:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28187:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28198:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28180:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28180:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28180:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28221:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28232:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28217:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28217:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28237:2:33",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28210:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28210:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28210:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28260:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28271:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28256:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28256:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28276:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_transferGasFee: ERC"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28249:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28249:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28249:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28331:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28342:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28327:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28327:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28347:20:33",
                                    "type": "",
                                    "value": "20_TRANSFER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28320:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28320:48:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28320:48:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28377:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28389:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28400:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28385:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28385:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28377:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a4c4f8821c7e12dec6fe310a34d8ff084ce99b654e4106a50c39bdfc34cbf202__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28147:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28161:4:33",
                            "type": ""
                          }
                        ],
                        "src": "27996:414:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28589:246:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28606:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28617:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28599:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28599:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28599:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28640:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28651:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28636:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28636:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28656:2:33",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28629:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28629:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28629:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28679:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28690:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28675:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28675:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28695:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#metaSafeBatchTransfe"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28668:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28668:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28668:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28750:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28761:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "28746:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28746:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "28766:26:33",
                                    "type": "",
                                    "value": "rFrom: INVALID_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "28739:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28739:54:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "28739:54:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28802:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "28814:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28825:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28810:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28810:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "28802:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c35c815541f857ca65052edde63901642b7e03e43bf83eec95218f874a8fdd62__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28566:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "28580:4:33",
                            "type": ""
                          }
                        ],
                        "src": "28415:420:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29014:232:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29031:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29042:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29024:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29024:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29024:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29065:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29076:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29061:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29061:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29081:2:33",
                                    "type": "",
                                    "value": "42"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29054:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29054:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29054:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29104:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29115:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29100:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29100:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29120:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#withdraw: TRANS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29093:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29093:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29093:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29175:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29186:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29171:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29171:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29191:12:33",
                                    "type": "",
                                    "value": "FER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29164:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29164:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29164:40:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29213:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29225:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29236:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29221:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29221:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29213:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_d7528a6cd90ae2fb6c5a0652ba5ca5a48bc570d63bd727556bdfb948863fb826__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28991:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29005:4:33",
                            "type": ""
                          }
                        ],
                        "src": "28840:406:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29425:237:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29442:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29453:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29435:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29435:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29435:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29476:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29487:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29472:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29472:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29492:2:33",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29465:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29465:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29465:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29515:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29526:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29511:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29511:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29531:34:33",
                                    "type": "",
                                    "value": "MetaERC20Wrapper#getTokenID: UNR"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29504:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29504:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29504:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29586:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29597:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29582:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29582:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29602:17:33",
                                    "type": "",
                                    "value": "EGISTERED_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29575:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29575:45:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29575:45:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29629:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29641:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29652:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29637:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29637:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "29629:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_e3ddbb34173b4d53b1858796a31b67c7ca88e7d9b7db4a44c73d3f1be7545c29__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29402:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29416:4:33",
                            "type": ""
                          }
                        ],
                        "src": "29251:411:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29841:237:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "29858:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29869:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29851:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29851:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29851:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29892:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29903:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29888:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29888:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29908:2:33",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29881:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29881:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29881:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29931:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29942:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29927:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29927:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "29947:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_signatureValidation"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29920:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29920:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29920:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30002:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30013:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29998:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29998:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30018:17:33",
                                    "type": "",
                                    "value": ": INVALID_NONCE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29991:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29991:45:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29991:45:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30045:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30057:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30068:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30053:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30053:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30045:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ff42cead1b7c6f0abed83c5e256b3e3ae18800a9206b9735befc73357d914de5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "29818:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "29832:4:33",
                            "type": ""
                          }
                        ],
                        "src": "29667:411:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30257:236:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30274:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30285:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30267:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30267:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30267:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30308:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30319:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30304:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30304:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30324:2:33",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30297:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30297:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30297:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30347:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30358:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30343:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30343:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30363:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_transferGasFee: UNS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30336:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30336:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30336:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "30418:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30429:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30414:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30414:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "30434:16:33",
                                    "type": "",
                                    "value": "UPPORTED_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30407:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30407:44:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30407:44:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "30460:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30472:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30483:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30468:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30468:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30460:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ff7a2afde0cf20930776bc6456716ff6f86d3807496d5fb53db8b79cc341816a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30234:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30248:4:33",
                            "type": ""
                          }
                        ],
                        "src": "30083:410:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30599:76:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "30609:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30621:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30632:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30617:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30617:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "30609:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "30651:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "30662:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30644:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30644:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30644:25:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "30568:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "30579:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "30590:4:33",
                            "type": ""
                          }
                        ],
                        "src": "30498:177:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "30724:198:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "30734:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30750:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "30744:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30744:9:33"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "30734:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "30762:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "30784:6:33"
                                  },
                                  {
                                    "name": "size",
                                    "nodeType": "YulIdentifier",
                                    "src": "30792:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "30780:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30780:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "30766:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30872:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "30874:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30874:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30874:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30815:10:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30827:18:33",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "30812:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30812:34:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30851:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30863:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "30848:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30848:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "30809:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30809:62:33"
                              },
                              "nodeType": "YulIf",
                              "src": "30806:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30901:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "30905:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30894:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30894:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30894:22:33"
                            }
                          ]
                        },
                        "name": "allocateMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "30704:4:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "30713:6:33",
                            "type": ""
                          }
                        ],
                        "src": "30680:242:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31002:108:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31046:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "31048:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31048:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31048:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31018:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31026:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31015:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31015:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "31012:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31068:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "31084:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31092:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "31080:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31080:17:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31099:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31076:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31076:28:33"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "31068:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_t_array$_t_address_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "30982:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "30993:4:33",
                            "type": ""
                          }
                        ],
                        "src": "30927:183:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31174:181:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31218:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "31220:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31220:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31220:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31190:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31198:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31187:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31187:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "31184:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31240:109:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "31260:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "31268:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "31256:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31256:17:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31275:66:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "31252:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31252:90:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31344:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31248:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31248:101:33"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "31240:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_t_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "31154:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "31165:4:33",
                            "type": ""
                          }
                        ],
                        "src": "31115:240:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31413:205:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31423:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "31432:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "31427:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31492:63:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "31517:3:33"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "31522:1:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "31513:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "31513:11:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "31536:3:33"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "31541:1:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "31532:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "31532:11:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "31526:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "31526:18:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "31506:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31506:39:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31506:39:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "31453:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31456:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31450:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31450:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "31464:19:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "31466:15:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "31475:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31478:2:33",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "31471:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31471:10:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "31466:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "31446:3:33",
                                "statements": []
                              },
                              "src": "31442:113:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31581:31:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "31594:3:33"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "31599:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "31590:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "31590:16:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31608:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "31583:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31583:27:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31583:27:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "31570:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31573:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31567:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31567:13:33"
                              },
                              "nodeType": "YulIf",
                              "src": "31564:2:33"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "31391:3:33",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "31396:3:33",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "31401:6:33",
                            "type": ""
                          }
                        ],
                        "src": "31360:258:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31670:109:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31757:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31766:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31769:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31759:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31759:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31759:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "31693:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "31704:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "31711:42:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "31700:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31700:54:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "31690:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31690:65:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31683:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31683:73:33"
                              },
                              "nodeType": "YulIf",
                              "src": "31680:2:33"
                            }
                          ]
                        },
                        "name": "validator_revert_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "31659:5:33",
                            "type": ""
                          }
                        ],
                        "src": "31623:156:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31828:76:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31882:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31891:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31894:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31884:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31884:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31884:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "31851:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "31872:5:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "31865:6:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31865:13:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "31858:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31858:21:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "31848:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31848:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31841:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31841:40:33"
                              },
                              "nodeType": "YulIf",
                              "src": "31838:2:33"
                            }
                          ]
                        },
                        "name": "validator_revert_t_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "31817:5:33",
                            "type": ""
                          }
                        ],
                        "src": "31784:120:33"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_t_array$_t_uint256_$dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst := array\n        mstore(array, length)\n        let _1 := 0x20\n        dst := add(array, _1)\n        let src := add(offset, _1)\n        if gt(add(add(offset, mul(length, _1)), _1), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n    }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_bytes(length))\n        mstore(array, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array, length), 0x20), 0)\n    }\n    function abi_decode_t_bytes_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := mload(offset)\n        array := allocateMemory(array_allocation_size_t_bytes(length))\n        mstore(array, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        copy_memory_to_memory(add(offset, 0x20), add(array, 0x20), length)\n    }\n    function abi_decode_t_struct$_GasReceipt_fromMemory(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x80) { revert(value, value) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x80)\n        let _1 := 0xffffffffffffffff\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        mstore(memPtr, mload(headStart))\n        mstore(add(memPtr, 32), mload(add(headStart, 32)))\n        let value_1 := mload(add(headStart, 64))\n        validator_revert_t_address(value_1)\n        mstore(add(memPtr, 64), value_1)\n        let offset := mload(add(headStart, 96))\n        if gt(offset, _1) { revert(0, 0) }\n        mstore(add(memPtr, 96), abi_decode_t_bytes_fromMemory(add(headStart, offset), end))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_address_payablet_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_address_payablet_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_address_payablet_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_boolt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value5, value5) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let value_2 := calldataload(add(headStart, 128))\n        validator_revert_t_bool(value_2)\n        value4 := value_2\n        let offset_2 := calldataload(add(headStart, 160))\n        if gt(offset_2, _1) { revert(value5, value5) }\n        value5 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_boolt_boolt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_t_bool(value_2)\n        value2 := value_2\n        let value_3 := calldataload(add(headStart, 96))\n        validator_revert_t_bool(value_3)\n        value3 := value_3\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_boolt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_2 := calldataload(add(headStart, 128))\n        validator_revert_t_bool(value_2)\n        value4 := value_2\n        let offset := calldataload(add(headStart, 160))\n        if gt(offset, 0xffffffffffffffff) { revert(value5, value5) }\n        value5 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_bytes32t_bytes_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let length := calldataload(_2)\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _3 := 0x20\n        dst := add(dst, _3)\n        let src := add(_2, _3)\n        if gt(add(add(_2, mul(length, _3)), _3), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let value := calldataload(src)\n            validator_revert_t_address(value)\n            mstore(dst, value)\n            dst := add(dst, _3)\n            src := add(src, _3)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _3))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        value0 := abi_decode_t_bytes_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_bytes_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_GasReceipt_fromMemory(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptrt_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_GasReceipt_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_bytes_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_packed_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let pos_1 := pos\n        let length := mload(value0)\n        pos_1 := pos\n        let _1 := 0x20\n        let srcPtr := add(value0, _1)\n        let i := end\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos_1, mload(srcPtr))\n            pos_1 := add(pos_1, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos_1\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes32__to_t_bytes_memory_ptr_t_uint256_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        mstore(end_1, value1)\n        mstore(add(end_1, 0x20), value2)\n        end := add(end_1, 64)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        mstore(end_1, value1)\n        let length_1 := mload(value2)\n        copy_memory_to_memory(add(value2, 0x20), add(end_1, 0x20), length_1)\n        end := add(add(end_1, length_1), 0x20)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    { end := pos }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_address_payable_t_address_payable_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        mstore(add(headStart, 160), tail)\n        tail := add(headStart, 192)\n    }\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n        mstore(add(headStart, 32), value1)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_encode_tuple_t_stringliteral_18ab744e6275fc2611ea3f469ab0998d462afdc8fb55fa1f0baa2f290c1dd8e8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 45)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#deposit: INCORR\")\n        mstore(add(headStart, 96), \"ECT_MSG_VALUE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_19a3130b3f25d805cc5717b6ec577f621b2eda36caf4381b0de60002320d245d__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 43)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#deposit: INVALI\")\n        mstore(add(headStart, 96), \"D_RECIPIENT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_298f8b1a7d09e54e9ad5dfd1b230710353cd7e0c23bec42e628b01c9bef64671__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 60)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#onERC1155Receiv\")\n        mstore(add(headStart, 96), \"ed: INVALID_ERC1155_RECEIVED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_52e2325dc5a388253b111b94bbca717f4138da2fa7211fcfb41ba013239fcc9e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#deposit: NON_NU\")\n        mstore(add(headStart, 96), \"LL_MSG_VALUE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_60c012ac410bc331a9c5c1e4b0a28751cc566065127914b00b9ee80212c2c0ff__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 41)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#deposit: TRANSF\")\n        mstore(add(headStart, 96), \"ER_FAILED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_61f5777e4201d0cacc6b01e4df7af612fe611d3e31e7f11d609bf3a8c318735e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"ERC1155Meta#metaSafeTransferFrom\")\n        mstore(add(headStart, 96), \": INVALID_RECIPIENT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6d3eb5c55a58dcdb83f34d1ad1e9a04e3cf6fabf83d70f1a41fc7973311b6fd4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"ERC1155Meta#_signatureValidation\")\n        mstore(add(headStart, 96), \": INVALID_SIGNATURE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_7f7fa389c177bc9787ac2c6dd7e77b288a431fbd01f0543daeaf9e12dd96ceb6__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 65)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#onERC1155BatchR\")\n        mstore(add(headStart, 96), \"eceived: INVALID_ERC1155_RECEIVE\")\n        mstore(add(headStart, 128), \"D\")\n        tail := add(headStart, 160)\n    }\n    function abi_encode_tuple_t_stringliteral_a3ff64274638dcdb2ba8a07eb1491f949b7ab0bfeb2b25cede5a4a3c65ef7065__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#withdraw: INVAL\")\n        mstore(add(headStart, 96), \"ID_RECIPIENT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_a400c79cc9e4d63fe5f7c90f141f667cd9b84b276de2c465e0102adb91057b61__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#getIdAddress: U\")\n        mstore(add(headStart, 96), \"NREGISTERED_TOKEN\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_a4c4f8821c7e12dec6fe310a34d8ff084ce99b654e4106a50c39bdfc34cbf202__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC1155Meta#_transferGasFee: ERC\")\n        mstore(add(headStart, 96), \"20_TRANSFER_FAILED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c35c815541f857ca65052edde63901642b7e03e43bf83eec95218f874a8fdd62__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"ERC1155Meta#metaSafeBatchTransfe\")\n        mstore(add(headStart, 96), \"rFrom: INVALID_RECIPIENT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_d7528a6cd90ae2fb6c5a0652ba5ca5a48bc570d63bd727556bdfb948863fb826__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#withdraw: TRANS\")\n        mstore(add(headStart, 96), \"FER_FAILED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_e3ddbb34173b4d53b1858796a31b67c7ca88e7d9b7db4a44c73d3f1be7545c29__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"MetaERC20Wrapper#getTokenID: UNR\")\n        mstore(add(headStart, 96), \"EGISTERED_TOKEN\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ff42cead1b7c6f0abed83c5e256b3e3ae18800a9206b9735befc73357d914de5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC1155Meta#_signatureValidation\")\n        mstore(add(headStart, 96), \": INVALID_NONCE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ff7a2afde0cf20930776bc6456716ff6f86d3807496d5fb53db8b79cc341816a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC1155Meta#_transferGasFee: UNS\")\n        mstore(add(headStart, 96), \"UPPORTED_TOKEN\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_array$_t_address_$dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(mul(length, 0x20), 0x20)\n    }\n    function array_allocation_size_t_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_t_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n}",
                  "id": 33,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600436106101475760003560e01c8063a22cb465116100c0578063e985e9c511610074578063f242432a11610059578063f242432a14610391578063f5d4c820146103b1578063fa4e12d7146103d15761015a565b8063e985e9c514610351578063f23a6e61146103715761015a565b8063bc197c81116100a5578063bc197c81146102e4578063ce0b514b14610311578063d9caed12146103315761015a565b8063a22cb465146102a4578063a3d4926e146102c45761015a565b80634e1273f4116101175780637358e9a5116100fc5780637358e9a51461024f5780638340f5491461027c5780639040a9491461028f5761015a565b80634e1273f41461020257806363f8071c1461022f5761015a565b8062fdd58e1461015f57806301ffc9a7146101955780632d0335ab146101c25780632eb2c2d6146101e25761015a565b3661015a57610158600133346103f1565b005b600080fd5b34801561016b57600080fd5b5061017f61017a366004613478565b6106c4565b60405161018c9190613edc565b60405180910390f35b3480156101a157600080fd5b506101b56101b0366004613582565b6106f7565b60405161018c9190613831565b3480156101ce57600080fd5b5061017f6101dd366004612fc5565b6107de565b3480156101ee57600080fd5b506101586101fd366004613270565b610806565b34801561020e57600080fd5b5061022261021d3660046134a3565b610911565b60405161018c91906137ed565b34801561023b57600080fd5b5061017f61024a366004612fc5565b610a5d565b34801561025b57600080fd5b5061026f61026a366004613681565b610aba565b60405161018c9190613730565b61015861028a36600461332b565b6103f1565b34801561029b57600080fd5b5061017f610b16565b3480156102b057600080fd5b506101586102bf3660046133ce565b610b1c565b3480156102d057600080fd5b506101586102df3660046131b3565b610bb5565b3480156102f057600080fd5b506103046102ff366004613062565b610d29565b60405161018c91906138b9565b34801561031d57600080fd5b5061015861032c36600461333f565b610df3565b34801561033d57600080fd5b5061015861034c36600461310c565b610ed2565b34801561035d57600080fd5b506101b561036c36600461302a565b610eeb565b34801561037d57600080fd5b5061030461038c36600461314c565b610f26565b34801561039d57600080fd5b506101586103ac3660046133b7565b610fa2565b3480156103bd57600080fd5b506101586103cc3660046132be565b6110a6565b3480156103dd57600080fd5b506101b56103ec3660046133fb565b6111d6565b73ffffffffffffffffffffffffffffffffffffffff8216610447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613943565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff841660011461066657341561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139fd565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516906323b872dd906104f590339030908790600401613751565b602060405180830381600087803b15801561050f57600080fd5b505af1158015610523573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105479190613566565b506105506119b7565b610586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613a5a565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600460205260409020548061065c576003805460010190819055600081815260056020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8b169081179091558352600490915290819020829055519092507ff977d54986414fc91816901629d1d788ad95448ab4198dcb9b6dc5ed2b930c1f9061064f9087908590613782565b60405180910390a1610660565b8091505b506106a3565b34821461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906138e6565b5060015b6106be838284604051806020016040528060008152506119eb565b50505050565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000148061078a57507fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000145b806107d657507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b90505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b3373ffffffffffffffffffffffffffffffffffffffff8616148061082f575061082f8533610eeb565b610884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806141be602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166108f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061412f6030913960400191505060405180910390fd5b6108fc85858585611aa0565b61090a858585855a86611df4565b5050505050565b6060815183511461096d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061415f602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561098757600080fd5b506040519080825280602002602001820160405280156109b1578160200160208202803683370190505b50905060005b8451811015610a55576000808683815181106109cf57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000858381518110610a1f57fe5b6020026020010151815260200190815260200160002054828281518110610a4257fe5b60209081029190910101526001016109b7565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020526040902054806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613dc5565b60008181526005602052604090205473ffffffffffffffffffffffffffffffffffffffff16806107d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613c51565b60035490565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff8516610c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d0b565b6060610c0c612df6565b6060610cbf89857fa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a060001b8c8c8c604051602001610c4a9190613699565b604051602081830303815290604052805190602001208c604051602001610c719190613699565b604051602081830303815290604052805190602001208c610c93576000610c96565b60015b604051602001610cab9695949392919061383c565b604051602081830303815290604052612061565b9050610ccd89898989611aa0565b8415610d105780806020019051810190610ce7919061364c565b8094508193505050610d0189898989866020015188611df4565b610d0b8983612230565b610d1e565b610d1e898989895a86611df4565b505050505050505050565b6000333014610d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b71565b60005b8451811015610dc757610d8c858281518110610d7f57fe5b6020026020010151610aba565b50610dbf3087878481518110610d9e57fe5b6020026020010151878581518110610db257fe5b60200260200101516124d9565b600101610d67565b507fbc197c81000000000000000000000000000000000000000000000000000000009695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610e40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613ab7565b6060610e4a612df6565b6060610e8289857fce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558828c8c8c8c610c93576000610c96565b9050610e90898989896126da565b8415610ec45780806020019051810190610eaa919061364c565b8094508193505050610d01898989898660200151886127dd565b610d1e898989895a866127dd565b6000610edd84610a5d565b90506106be338483856124d9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6000333014610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e906139a0565b610f6a84610aba565b50610f77308686866124d9565b507ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b3373ffffffffffffffffffffffffffffffffffffffff86161480610fcb5750610fcb8533610eeb565b611020576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180614029602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613fc7602b913960400191505060405180910390fd5b611098858585856126da565b61090a858585855a866127dd565b606061110286837ff5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa5248289896110dc5760006110df565b60015b896110eb5760006110ee565b60015b604051602001610cab95949392919061387d565b73ffffffffffffffffffffffffffffffffffffffff8781166000818152600160209081526040808320948b16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168915151790555192935090917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190611196908890613831565b60405180910390a382156111ce576111ac612df6565b818060200190518101906111c09190613619565b90506111cc8782612230565b505b505050505050565b600080825111611231576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806141ed6043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851661129d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603381526020018061418b6033913960400191505060405180910390fd5b60006112a8836129ce565b60f81c905060058110611306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b60008160ff16600581111561131757fe5b905060008080808085600581111561132b57fe5b1415611382576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806140c26036913960400191505060405180910390fd5b600185600581111561139057fe5b14156114d35787516061146113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b6113fb886000612a8b565b9250611408886020612a8b565b91508760408151811061141757fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015611481573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d811691161497506119af9650505050505050565b60028560058111156114e157fe5b1415611631578751606114611541576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806140f86037913960400191505060405180910390fd5b61154c886000612a8b565b9250611559886020612a8b565b91508760408151811061156857fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611481573d6000803e3d6000fd5b600385600581111561163f57fe5b14156117f757604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b838110156116cd5781810151838201526020016116b5565b50505050905090810190601f1680156116fa5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561172d578181015183820152602001611715565b50505050905090810190601f16801561175a5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561177957600080fd5b505afa15801561178d573d6000803e3d6000fd5b505050506040513d60208110156117a357600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b600485600581111561180557fe5b141561195e57604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b8381101561189557818101518382015260200161187d565b50505050905090810190601f1680156118c25780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b1580156118e057600080fd5b505afa1580156118f4573d6000803e3d6000fd5b505050506040513d602081101561190a57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e000000000000000000000000000000000000000000000000000000001496506119af95505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180614088603a913960400191505060405180910390fd5b949350505050565b6000803d80156119ce57602081146119d7576119e3565b600191506119e3565b60206000803e60005191505b501515905090565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320868452909152902054611a249083612af3565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46106be60008585855a866127dd565b8051825114611afa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806140536035913960400191505060405180910390fd5b815160005b81811015611cec57611b8f838281518110611b1657fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611b6a57fe5b6020026020010151815260200190815260200160002054612b6e90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611bdb57fe5b6020026020010151815260200190815260200160002081905550611c7d838281518110611c0457fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110611c5857fe5b6020026020010151815260200190815260200160002054612af390919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110611cc957fe5b602090810291909101810151825281019190915260400160002055600101611aff565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611d99578181015183820152602001611d81565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015611dd8578181015183820152602001611dc0565b5050505090500194505050505060405180910390a45050505050565b611e138573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611ecb578181015183820152602001611eb3565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015611f0a578181015183820152602001611ef2565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611f46578181015183820152602001611f2e565b50505050905090810190601f168015611f735780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015611f9857600080fd5b5087f1158015611fac573d6000803e3d6000fd5b50505050506040513d6020811015611fc357600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614230603f913960400191505060405180910390fd5b6060808380602001905181019061207891906135c2565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040812054919450919250906120b0836041612a8b565b90508181108015906120c457508160640181105b6120fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e22565b60006121368683878051906020012060405160200161211b939291906136cf565b60405160208183030381529060405280519060200120612c1c565b9050606086838760405160200161214f939291906136f6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825273ffffffffffffffffffffffffffffffffffffffff8c166000818152600260205292909220600187019081905590935090917fb861b7bdbe611a846ab271b8d2810391bc8b5a968f390c322438ecab66bccf59916121da91613edc565b60405180910390a26121ee898383886111d6565b612224576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613b14565b50505050509392505050565b600061223f82606001516129ce565b60f81c90506002811061227e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613e7f565b60008160ff16600281111561228f57fe5b835160408501519192506000918291829173ffffffffffffffffffffffffffffffffffffffff16156122c55786604001516122c7565b335b925060008560028111156122d757fe5b14156123d65786606001518060200190518101906122f59190612ffd565b909450915073ffffffffffffffffffffffffffffffffffffffff841630141561234657612324888484846126da565b6123418884845a85604051806020016040528060008152506127dd565b6123d1565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f242432a9061239e908b908790879087906004016137a8565b600060405180830381600087803b1580156123b857600080fd5b505af11580156123cc573d6000803e3d6000fd5b505050505b6124cf565b86606001518060200190518101906123ee9190612fe1565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90612447908b9087908690600401613751565b602060405180830381600087803b15801561246157600080fd5b505af1158015612475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124999190613566565b6124cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613cae565b5050505050505050565b6124e4848383612d4b565b600182146125ea57600082815260056020526040908190205490517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690819063a9059cbb906125539087908690600401613782565b602060405180830381600087803b15801561256d57600080fd5b505af1158015612581573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a59190613566565b506125ae6119b7565b6125e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b506106be565b73ffffffffffffffffffffffffffffffffffffffff8316612637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613bf4565b60008373ffffffffffffffffffffffffffffffffffffffff168260405161265d9061372d565b60006040518083038185875af1925050503d806000811461269a576040519150601f19603f3d011682016040523d82523d6000602084013e61269f565b606091505b505090508061090a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161043e90613d68565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546127139082612b6e565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546127639082612af3565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6127fc8573ffffffffffffffffffffffffffffffffffffffff16612be5565b156111ce5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156128b557818101518382015260200161289d565b50505050905090810190601f1680156128e25780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561290557600080fd5b5087f1158015612919573d6000803e3d6000fd5b50505050506040513d602081101561293057600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146111cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061426f603a913960400191505060405180910390fd5b600080825111612a29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180613ff26037913960400191505060405180910390fd5b81600183510381518110612a3957fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b60008160200183511015612aea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806142a9603c913960400191505060405180910390fd5b50016020015190565b600082820183811015612b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b600082821115612bdf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000813f8015801590612b6757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b604080518082018252600281527f1901000000000000000000000000000000000000000000000000000000000000602080830191825283517f035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d47498183015230818601528451808203860181526060820190955284519490910193909320825160009491928692608001918291908083835b60208310612ce957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612cac565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152902054612d849082612b6e565b73ffffffffffffffffffffffffffffffffffffffff841660008181526020818152604080832087845282528083209490945583518681529081018590528351919333927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4505050565b60405180608001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600082601f830112612e44578081fd5b8135612e57612e5282613f09565b613ee5565b818152915060208083019084810181840286018201871015612e7857600080fd5b60005b84811015612e9757813584529282019290820190600101612e7b565b505050505092915050565b600082601f830112612eb2578081fd5b8135612ec0612e5282613f27565b9150808252836020828501011115612ed757600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612f00578081fd5b8151612f0e612e5282613f27565b9150808252836020828501011115612f2557600080fd5b612f36816020840160208601613f67565b5092915050565b600060808284031215612f4e578081fd5b6040516080810167ffffffffffffffff8282108183111715612f6c57fe5b81604052829350845183526020850151602084015260408501519150612f9182613f93565b8160408401526060850151915080821115612fab57600080fd5b50612fb885828601612ef0565b6060830152505092915050565b600060208284031215612fd6578081fd5b8135612b6781613f93565b600060208284031215612ff2578081fd5b8151612b6781613f93565b6000806040838503121561300f578081fd5b825161301a81613f93565b6020939093015192949293505050565b6000806040838503121561303c578182fd5b823561304781613f93565b9150602083013561305781613f93565b809150509250929050565b600080600080600060a08688031215613079578081fd5b853561308481613f93565b9450602086013561309481613f93565b9350604086013567ffffffffffffffff808211156130b0578283fd5b6130bc89838a01612e34565b945060608801359150808211156130d1578283fd5b6130dd89838a01612e34565b935060808801359150808211156130f2578283fd5b506130ff88828901612ea2565b9150509295509295909350565b600080600060608486031215613120578283fd5b833561312b81613f93565b9250602084013561313b81613f93565b929592945050506040919091013590565b600080600080600060a08688031215613163578081fd5b853561316e81613f93565b9450602086013561317e81613f93565b93506040860135925060608601359150608086013567ffffffffffffffff8111156131a7578182fd5b6130ff88828901612ea2565b60008060008060008060c087890312156131cb578384fd5b86356131d681613f93565b955060208701356131e681613f93565b9450604087013567ffffffffffffffff80821115613202578586fd5b61320e8a838b01612e34565b95506060890135915080821115613223578283fd5b61322f8a838b01612e34565b94506080890135915061324182613fb8565b90925060a08801359080821115613256578283fd5b5061326389828a01612ea2565b9150509295509295509295565b600080600080600060a08688031215613287578283fd5b853561329281613f93565b945060208601356132a281613f93565b9350604086013567ffffffffffffffff808211156130b0578485fd5b600080600080600060a086880312156132d5578283fd5b85356132e081613f93565b945060208601356132f081613f93565b9350604086013561330081613fb8565b9250606086013561331081613fb8565b9150608086013567ffffffffffffffff8111156131a7578182fd5b600080600060608486031215613120578081fd5b60008060008060008060c08789031215613357578384fd5b863561336281613f93565b9550602087013561337281613f93565b94506040870135935060608701359250608087013561339081613fb8565b915060a087013567ffffffffffffffff8111156133ab578182fd5b61326389828a01612ea2565b600080600080600060a08688031215613163578283fd5b600080604083850312156133e0578182fd5b82356133eb81613f93565b9150602083013561305781613fb8565b60008060008060808587031215613410578182fd5b843561341b81613f93565b935060208501359250604085013567ffffffffffffffff8082111561343e578384fd5b61344a88838901612ea2565b9350606087013591508082111561345f578283fd5b5061346c87828801612ea2565b91505092959194509250565b6000806040838503121561348a578182fd5b823561349581613f93565b946020939093013593505050565b600080604083850312156134b5578182fd5b823567ffffffffffffffff808211156134cc578384fd5b818501915085601f8301126134df578384fd5b81356134ed612e5282613f09565b80828252602080830192508086018a82838702890101111561350d578889fd5b8896505b8487101561353857803561352481613f93565b845260019690960195928101928101613511565b50909650870135935050508082111561354f578283fd5b5061355c85828601612e34565b9150509250929050565b600060208284031215613577578081fd5b8151612b6781613fb8565b600060208284031215613593578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114612b67578182fd5b600080604083850312156135d4578182fd5b825167ffffffffffffffff808211156135eb578384fd5b6135f786838701612ef0565b9350602085015191508082111561360c578283fd5b5061355c85828601612ef0565b60006020828403121561362a578081fd5b815167ffffffffffffffff811115613640578182fd5b6119af84828501612f3d565b6000806040838503121561365e578182fd5b825167ffffffffffffffff80821115613675578384fd5b6135f786838701612f3d565b600060208284031215613692578081fd5b5035919050565b815160009082906020808601845b838110156136c3578151855293820193908201906001016136a7565b50929695505050505050565b600084516136e1818460208901613f67565b91909101928352506020820152604001919050565b60008451613708818460208901613f67565b82018481528351613720816020808501908801613f67565b0160200195945050505050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6020808252825182820181905260009190848201906040850190845b8181101561382557835183529284019291840191600101613809565b50909695505050505050565b901515815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6020808252602d908201527f4d657461455243323057726170706572236465706f7369743a20494e434f525260408201527f4543545f4d53475f56414c554500000000000000000000000000000000000000606082015260800190565b6020808252602b908201527f4d657461455243323057726170706572236465706f7369743a20494e56414c4960408201527f445f524543495049454e54000000000000000000000000000000000000000000606082015260800190565b6020808252603c908201527f4d657461455243323057726170706572236f6e4552433131353552656365697660408201527f65643a20494e56414c49445f455243313135355f524543454956454400000000606082015260800190565b6020808252602c908201527f4d657461455243323057726170706572236465706f7369743a204e4f4e5f4e5560408201527f4c4c5f4d53475f56414c55450000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4d657461455243323057726170706572236465706f7369743a205452414e534660408201527f45525f4641494c45440000000000000000000000000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461236d657461536166655472616e7366657246726f6d60408201527f3a20494e56414c49445f524543495049454e5400000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f5349474e415455524500000000000000000000000000606082015260800190565b60208082526041908201527f4d657461455243323057726170706572236f6e4552433131353542617463685260408201527f656365697665643a20494e56414c49445f455243313135355f5245434549564560608201527f4400000000000000000000000000000000000000000000000000000000000000608082015260a00190565b6020808252602c908201527f4d6574614552433230577261707065722377697468647261773a20494e56414c60408201527f49445f524543495049454e540000000000000000000000000000000000000000606082015260800190565b60208082526031908201527f4d657461455243323057726170706572236765744964416464726573733a205560408201527f4e524547495354455245445f544f4b454e000000000000000000000000000000606082015260800190565b60208082526032908201527f455243313135354d657461235f7472616e736665724761734665653a2045524360408201527f32305f5452414e534645525f4641494c45440000000000000000000000000000606082015260800190565b60208082526038908201527f455243313135354d657461236d6574615361666542617463685472616e73666560408201527f7246726f6d3a20494e56414c49445f524543495049454e540000000000000000606082015260800190565b6020808252602a908201527f4d6574614552433230577261707065722377697468647261773a205452414e5360408201527f4645525f4641494c454400000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f4d65746145524332305772617070657223676574546f6b656e49443a20554e5260408201527f4547495354455245445f544f4b454e0000000000000000000000000000000000606082015260800190565b6020808252602f908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f4e4f4e43450000000000000000000000000000000000606082015260800190565b6020808252602e908201527f455243313135354d657461235f7472616e736665724761734665653a20554e5360408201527f5550504f525445445f544f4b454e000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715613f0157fe5b604052919050565b600067ffffffffffffffff821115613f1d57fe5b5060209081020190565b600067ffffffffffffffff821115613f3b57fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015613f82578181015183820152602001613f6a565b838111156106be5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114613fb557600080fd5b50565b8015158114613fb557600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245444552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f524551554952454445524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e455245524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f524551554952454445524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d4553534147454c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a264697066735822122044cddb091b71cd6a1f7302a3257892b47a563a3ef597c504d327af7d9ad101ff64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x147 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0xC0 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xF242432A GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x391 JUMPI DUP1 PUSH4 0xF5D4C820 EQ PUSH2 0x3B1 JUMPI DUP1 PUSH4 0xFA4E12D7 EQ PUSH2 0x3D1 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x371 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xBC197C81 GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0xCE0B514B EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x331 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x2A4 JUMPI DUP1 PUSH4 0xA3D4926E EQ PUSH2 0x2C4 JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x117 JUMPI DUP1 PUSH4 0x7358E9A5 GT PUSH2 0xFC JUMPI DUP1 PUSH4 0x7358E9A5 EQ PUSH2 0x24F JUMPI DUP1 PUSH4 0x8340F549 EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x9040A949 EQ PUSH2 0x28F JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0x63F8071C EQ PUSH2 0x22F JUMPI PUSH2 0x15A JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x15F JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x195 JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0x1C2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x1E2 JUMPI PUSH2 0x15A JUMP JUMPDEST CALLDATASIZE PUSH2 0x15A JUMPI PUSH2 0x158 PUSH1 0x1 CALLER CALLVALUE PUSH2 0x3F1 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x16B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x17A CALLDATASIZE PUSH1 0x4 PUSH2 0x3478 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3EDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x3582 JUMP JUMPDEST PUSH2 0x6F7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3831 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x1DD CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC5 JUMP JUMPDEST PUSH2 0x7DE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x1FD CALLDATASIZE PUSH1 0x4 PUSH2 0x3270 JUMP JUMPDEST PUSH2 0x806 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x222 PUSH2 0x21D CALLDATASIZE PUSH1 0x4 PUSH2 0x34A3 JUMP JUMPDEST PUSH2 0x911 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x37ED JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x23B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0x24A CALLDATASIZE PUSH1 0x4 PUSH2 0x2FC5 JUMP JUMPDEST PUSH2 0xA5D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x26F PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0x3681 JUMP JUMPDEST PUSH2 0xABA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x3730 JUMP JUMPDEST PUSH2 0x158 PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0x332B JUMP JUMPDEST PUSH2 0x3F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x29B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x17F PUSH2 0xB16 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x2BF CALLDATASIZE PUSH1 0x4 PUSH2 0x33CE JUMP JUMPDEST PUSH2 0xB1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x2DF CALLDATASIZE PUSH1 0x4 PUSH2 0x31B3 JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x2FF CALLDATASIZE PUSH1 0x4 PUSH2 0x3062 JUMP JUMPDEST PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x18C SWAP2 SWAP1 PUSH2 0x38B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x333F JUMP JUMPDEST PUSH2 0xDF3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x33D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x34C CALLDATASIZE PUSH1 0x4 PUSH2 0x310C JUMP JUMPDEST PUSH2 0xED2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x36C CALLDATASIZE PUSH1 0x4 PUSH2 0x302A JUMP JUMPDEST PUSH2 0xEEB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x304 PUSH2 0x38C CALLDATASIZE PUSH1 0x4 PUSH2 0x314C JUMP JUMPDEST PUSH2 0xF26 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x39D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x3AC CALLDATASIZE PUSH1 0x4 PUSH2 0x33B7 JUMP JUMPDEST PUSH2 0xFA2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x158 PUSH2 0x3CC CALLDATASIZE PUSH1 0x4 PUSH2 0x32BE JUMP JUMPDEST PUSH2 0x10A6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1B5 PUSH2 0x3EC CALLDATASIZE PUSH1 0x4 PUSH2 0x33FB JUMP JUMPDEST PUSH2 0x11D6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH2 0x447 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3943 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x1 EQ PUSH2 0x666 JUMPI CALLVALUE ISZERO PUSH2 0x49F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x39FD JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x4F5 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x3751 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x523 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x547 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST POP PUSH2 0x550 PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0x586 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3A5A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x65C JUMPI PUSH1 0x3 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP4 MSTORE PUSH1 0x4 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP3 SWAP1 SSTORE MLOAD SWAP1 SWAP3 POP PUSH32 0xF977D54986414FC91816901629D1D788AD95448AB4198DCB9B6DC5ED2B930C1F SWAP1 PUSH2 0x64F SWAP1 DUP8 SWAP1 DUP6 SWAP1 PUSH2 0x3782 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH2 0x660 JUMP JUMPDEST DUP1 SWAP2 POP JUMPDEST POP PUSH2 0x6A3 JUMP JUMPDEST CALLVALUE DUP3 EQ PUSH2 0x69F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x38E6 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST PUSH2 0x6BE DUP4 DUP3 DUP5 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x19EB JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ DUP1 PUSH2 0x78A JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ JUMPDEST DUP1 PUSH2 0x7D6 JUMPI POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0x4E2312E000000000000000000000000000000000000000000000000000000000 EQ JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x82F JUMPI POP PUSH2 0x82F DUP6 CALLER PUSH2 0xEEB JUMP JUMPDEST PUSH2 0x884 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x41BE PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x8F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x412F PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x8FC DUP6 DUP6 DUP6 DUP6 PUSH2 0x1AA0 JUMP JUMPDEST PUSH2 0x90A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1DF4 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x96D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x415F PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x987 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x9B1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9CF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xA1F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA42 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x9B7 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3DC5 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP1 PUSH2 0x7D9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3C51 JUMP JUMPDEST PUSH1 0x3 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0xC02 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D0B JUMP JUMPDEST PUSH1 0x60 PUSH2 0xC0C PUSH2 0x2DF6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCBF DUP10 DUP6 PUSH32 0xA3D4926E8CF8FE8E020CD29F514C256BC2EEC62AA2337E415F1A33A4828AF5A0 PUSH1 0x0 SHL DUP13 DUP13 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC4A SWAP2 SWAP1 PUSH2 0x3699 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xC71 SWAP2 SWAP1 PUSH2 0x3699 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH2 0xC93 JUMPI PUSH1 0x0 PUSH2 0xC96 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCAB SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x2061 JUMP JUMPDEST SWAP1 POP PUSH2 0xCCD DUP10 DUP10 DUP10 DUP10 PUSH2 0x1AA0 JUMP JUMPDEST DUP5 ISZERO PUSH2 0xD10 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xCE7 SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0xD01 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x1DF4 JUMP JUMPDEST PUSH2 0xD0B DUP10 DUP4 PUSH2 0x2230 JUMP JUMPDEST PUSH2 0xD1E JUMP JUMPDEST PUSH2 0xD1E DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x1DF4 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0xD64 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3B71 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xDC7 JUMPI PUSH2 0xD8C DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD7F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xABA JUMP JUMPDEST POP PUSH2 0xDBF ADDRESS DUP8 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xD9E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xDB2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x24D9 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0xD67 JUMP JUMPDEST POP PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0xE40 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3AB7 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE4A PUSH2 0x2DF6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE82 DUP10 DUP6 PUSH32 0xCE0B514B3931BDBE4D5D44E4F035AFE7113767B7DB71949271F6A62D9C60F558 DUP3 DUP13 DUP13 DUP13 DUP13 PUSH2 0xC93 JUMPI PUSH1 0x0 PUSH2 0xC96 JUMP JUMPDEST SWAP1 POP PUSH2 0xE90 DUP10 DUP10 DUP10 DUP10 PUSH2 0x26DA JUMP JUMPDEST DUP5 ISZERO PUSH2 0xEC4 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xEAA SWAP2 SWAP1 PUSH2 0x364C JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0xD01 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x27DD JUMP JUMPDEST PUSH2 0xD1E DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEDD DUP5 PUSH2 0xA5D JUMP JUMPDEST SWAP1 POP PUSH2 0x6BE CALLER DUP5 DUP4 DUP6 PUSH2 0x24D9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER ADDRESS EQ PUSH2 0xF61 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x39A0 JUMP JUMPDEST PUSH2 0xF6A DUP5 PUSH2 0xABA JUMP JUMPDEST POP PUSH2 0xF77 ADDRESS DUP7 DUP7 DUP7 PUSH2 0x24D9 JUMP JUMPDEST POP PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0xFCB JUMPI POP PUSH2 0xFCB DUP6 CALLER PUSH2 0xEEB JUMP JUMPDEST PUSH2 0x1020 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4029 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FC7 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1098 DUP6 DUP6 DUP6 DUP6 PUSH2 0x26DA JUMP JUMPDEST PUSH2 0x90A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST PUSH1 0x60 PUSH2 0x1102 DUP7 DUP4 PUSH32 0xF5D4C820494C8595DE274C7FF619BEAD38AAC4FBC3D143B5BF956AA4B84FA524 DUP3 DUP10 DUP10 PUSH2 0x10DC JUMPI PUSH1 0x0 PUSH2 0x10DF JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP10 PUSH2 0x10EB JUMPI PUSH1 0x0 PUSH2 0x10EE JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0xCAB SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x387D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP12 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP10 ISZERO ISZERO OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP1 PUSH2 0x1196 SWAP1 DUP9 SWAP1 PUSH2 0x3831 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP3 ISZERO PUSH2 0x11CE JUMPI PUSH2 0x11AC PUSH2 0x2DF6 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x11C0 SWAP2 SWAP1 PUSH2 0x3619 JUMP JUMPDEST SWAP1 POP PUSH2 0x11CC DUP8 DUP3 PUSH2 0x2230 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x1231 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x41ED PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x129D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x418B PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x12A8 DUP4 PUSH2 0x29CE JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x5 DUP2 LT PUSH2 0x1306 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4088 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1317 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x132B JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1382 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40C2 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1390 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x14D3 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x13F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40F8 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x13FB DUP9 PUSH1 0x0 PUSH2 0x2A8B JUMP JUMPDEST SWAP3 POP PUSH2 0x1408 DUP9 PUSH1 0x20 PUSH2 0x2A8B JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x1417 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP4 POP PUSH1 0x1 DUP11 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1481 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 DUP2 AND SWAP2 AND EQ SWAP8 POP PUSH2 0x19AF SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x14E1 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1631 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x1541 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x40F8 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x154C DUP9 PUSH1 0x0 PUSH2 0x2A8B JUMP JUMPDEST SWAP3 POP PUSH2 0x1559 DUP9 PUSH1 0x20 PUSH2 0x2A8B JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x1568 JUMPI INVALID JUMPDEST ADD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 DUP6 ADD MSTORE PUSH1 0x3C DUP1 DUP3 ADD DUP16 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x5C DUP3 ADD DUP1 DUP5 MSTORE DUP2 MLOAD SWAP2 DUP7 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP1 SWAP2 MSTORE PUSH1 0x7C DUP3 ADD DUP1 DUP5 MSTORE MSTORE PUSH1 0xF8 SWAP3 SWAP1 SWAP3 SHR PUSH1 0x9C DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xBC DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0xDC DUP4 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP1 SWAP7 POP PUSH1 0x1 SWAP3 PUSH1 0xFC DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1481 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x163F JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x17F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 DUP3 MSTORE DUP11 MLOAD PUSH1 0x44 DUP3 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP3 PUSH4 0x20C13B0B SWAP3 DUP14 SWAP3 DUP14 SWAP3 SWAP2 DUP3 SWAP2 PUSH1 0x24 DUP3 ADD SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16CD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16B5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x16FA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x172D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1715 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x175A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1779 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x178D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x19AF SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1805 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x195E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP13 DUP2 MSTORE PUSH1 0x24 DUP3 ADD SWAP3 DUP4 MSTORE DUP11 MLOAD PUSH1 0x44 DUP4 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP4 PUSH4 0x1626BA7E SWAP4 DUP16 SWAP4 DUP15 SWAP4 SWAP1 SWAP3 SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1895 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x187D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18C2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x18F4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x190A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x19AF SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4088 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 RETURNDATASIZE DUP1 ISZERO PUSH2 0x19CE JUMPI PUSH1 0x20 DUP2 EQ PUSH2 0x19D7 JUMPI PUSH2 0x19E3 JUMP JUMPDEST PUSH1 0x1 SWAP2 POP PUSH2 0x19E3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x0 DUP1 RETURNDATACOPY PUSH1 0x0 MLOAD SWAP2 POP JUMPDEST POP ISZERO ISZERO SWAP1 POP SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1A24 SWAP1 DUP4 PUSH2 0x2AF3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP8 DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x6BE PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x27DD JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x1AFA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4053 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1CEC JUMPI PUSH2 0x1B8F DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B16 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1B6A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x2B6E SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1BDB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x1C7D DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1C04 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1C58 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x2AF3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1CC9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1AFF JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1D99 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1D81 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1DD8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1DC0 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1E13 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2BE5 JUMP JUMPDEST ISZERO PUSH2 0x11CE JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1ECB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EB3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F0A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1EF2 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1F46 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1F2E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F73 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1F98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1FAC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1FC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x4230 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP1 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x2078 SWAP2 SWAP1 PUSH2 0x35C2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x20B0 DUP4 PUSH1 0x41 PUSH2 0x2A8B JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x20C4 JUMPI POP DUP2 PUSH1 0x64 ADD DUP2 LT JUMPDEST PUSH2 0x20FA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3E22 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2136 DUP7 DUP4 DUP8 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x211B SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36CF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x2C1C JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP7 DUP4 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x214F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x36F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x1 DUP8 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 SWAP4 POP SWAP1 SWAP2 PUSH32 0xB861B7BDBE611A846AB271B8D2810391BC8B5A968F390C322438ECAB66BCCF59 SWAP2 PUSH2 0x21DA SWAP2 PUSH2 0x3EDC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x21EE DUP10 DUP4 DUP4 DUP9 PUSH2 0x11D6 JUMP JUMPDEST PUSH2 0x2224 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3B14 JUMP JUMPDEST POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x223F DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x29CE JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x2 DUP2 LT PUSH2 0x227E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3E7F JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x228F JUMPI INVALID JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP6 ADD MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x22C5 JUMPI DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x22C7 JUMP JUMPDEST CALLER JUMPDEST SWAP3 POP PUSH1 0x0 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x22D7 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x23D6 JUMPI DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x22F5 SWAP2 SWAP1 PUSH2 0x2FFD JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ ISZERO PUSH2 0x2346 JUMPI PUSH2 0x2324 DUP9 DUP5 DUP5 DUP5 PUSH2 0x26DA JUMP JUMPDEST PUSH2 0x2341 DUP9 DUP5 DUP5 GAS DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x27DD JUMP JUMPDEST PUSH2 0x23D1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0xF242432A SWAP1 PUSH2 0x239E SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x37A8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x23B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x23CC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x24CF JUMP JUMPDEST DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x23EE SWAP2 SWAP1 PUSH2 0x2FE1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x2447 SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3751 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2461 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2475 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2499 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST PUSH2 0x24CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3CAE JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x24E4 DUP5 DUP4 DUP4 PUSH2 0x2D4B JUMP JUMPDEST PUSH1 0x1 DUP3 EQ PUSH2 0x25EA JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP1 DUP2 SWAP1 PUSH4 0xA9059CBB SWAP1 PUSH2 0x2553 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x3782 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x256D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2581 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x25A5 SWAP2 SWAP1 PUSH2 0x3566 JUMP JUMPDEST POP PUSH2 0x25AE PUSH2 0x19B7 JUMP JUMPDEST PUSH2 0x25E4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D68 JUMP JUMPDEST POP PUSH2 0x6BE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH2 0x2637 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3BF4 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH1 0x40 MLOAD PUSH2 0x265D SWAP1 PUSH2 0x372D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x269A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x269F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x90A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x43E SWAP1 PUSH2 0x3D68 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2713 SWAP1 DUP3 PUSH2 0x2B6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x2763 SWAP1 DUP3 PUSH2 0x2AF3 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x27FC DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x2BE5 JUMP JUMPDEST ISZERO PUSH2 0x11CE JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x28B5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x289D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x28E2 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2905 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x2919 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2930 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x426F PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x2A29 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3FF2 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x2A39 JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO PUSH2 0x2AEA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x42A9 PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x2B67 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x2BDF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x2B67 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD PUSH32 0x35AFF83D86937D35B32E04F0DDC6FF469290EEF2F1B692D8A815C89404D4749 DUP2 DUP4 ADD MSTORE ADDRESS DUP2 DUP7 ADD MSTORE DUP5 MLOAD DUP1 DUP3 SUB DUP7 ADD DUP2 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP6 MSTORE DUP5 MLOAD SWAP5 SWAP1 SWAP2 ADD SWAP4 SWAP1 SWAP4 KECCAK256 DUP3 MLOAD PUSH1 0x0 SWAP5 SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0x80 ADD SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x2CE9 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2CAC JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE SWAP3 ADD SWAP5 DUP6 MSTORE POP DUP4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP5 SUB DUP4 ADD DUP2 MSTORE SWAP3 DUP2 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x2D84 SWAP1 DUP3 PUSH2 0x2B6E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD SWAP2 SWAP4 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2E44 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2E57 PUSH2 0x2E52 DUP3 PUSH2 0x3F09 JUMP JUMPDEST PUSH2 0x3EE5 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x2E78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x2E97 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2E7B JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2EB2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2EC0 PUSH2 0x2E52 DUP3 PUSH2 0x3F27 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2ED7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2F00 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2F0E PUSH2 0x2E52 DUP3 PUSH2 0x3F27 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x2F25 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2F36 DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F67 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2F4E JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x2F6C JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 SWAP4 POP DUP5 MLOAD DUP4 MSTORE PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH2 0x2F91 DUP3 PUSH2 0x3F93 JUMP JUMPDEST DUP2 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2FAB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FB8 DUP6 DUP3 DUP7 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FD6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2B67 DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2FF2 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B67 DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x300F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x301A DUP2 PUSH2 0x3F93 JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x303C JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3047 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3057 DUP2 PUSH2 0x3F93 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3079 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3084 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x3094 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x30B0 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x30BC DUP10 DUP4 DUP11 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x30D1 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x30DD DUP10 DUP4 DUP11 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x30F2 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x30FF DUP9 DUP3 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3120 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x312B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x313B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3163 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x316E DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x317E DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x30FF DUP9 DUP3 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x31CB JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x31D6 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x31E6 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3202 JUMPI DUP6 DUP7 REVERT JUMPDEST PUSH2 0x320E DUP11 DUP4 DUP12 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x3223 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x322F DUP11 DUP4 DUP12 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH2 0x3241 DUP3 PUSH2 0x3FB8 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x3256 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x3263 DUP10 DUP3 DUP11 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3287 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x3292 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x32A2 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x30B0 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x32D5 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x32E0 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x32F0 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x3300 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x3310 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x31A7 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x3120 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x3357 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x3362 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x3372 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x3390 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x33AB JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x3263 DUP10 DUP3 DUP11 ADD PUSH2 0x2EA2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x3163 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x33E0 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x33EB DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x3057 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x3410 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x341B DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x343E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x344A DUP9 DUP4 DUP10 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x345F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x346C DUP8 DUP3 DUP9 ADD PUSH2 0x2EA2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x348A JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3495 DUP2 PUSH2 0x3F93 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x34B5 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x34CC JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x34DF JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x34ED PUSH2 0x2E52 DUP3 PUSH2 0x3F09 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x350D JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x3538 JUMPI DUP1 CALLDATALOAD PUSH2 0x3524 DUP2 PUSH2 0x3F93 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x3511 JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x354F JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x355C DUP6 DUP3 DUP7 ADD PUSH2 0x2E34 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3577 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2B67 DUP2 PUSH2 0x3FB8 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3593 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x2B67 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x35D4 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x35EB JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x35F7 DUP7 DUP4 DUP8 ADD PUSH2 0x2EF0 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x360C JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x355C DUP6 DUP3 DUP7 ADD PUSH2 0x2EF0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x362A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x3640 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x19AF DUP5 DUP3 DUP6 ADD PUSH2 0x2F3D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x365E JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x3675 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x35F7 DUP7 DUP4 DUP8 ADD PUSH2 0x2F3D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3692 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 DUP3 SWAP1 PUSH1 0x20 DUP1 DUP7 ADD DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x36C3 JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x36A7 JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x36E1 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3F67 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 DUP4 MSTORE POP PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x3708 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x3F67 JUMP JUMPDEST DUP3 ADD DUP5 DUP2 MSTORE DUP4 MLOAD PUSH2 0x3720 DUP2 PUSH1 0x20 DUP1 DUP6 ADD SWAP1 DUP9 ADD PUSH2 0x3F67 JUMP JUMPDEST ADD PUSH1 0x20 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3825 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x3809 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2D SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A20494E434F5252 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4543545F4D53475F56414C554500000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2B SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A20494E56414C49 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x445F524543495049454E54000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x3C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236F6E45524331313535526563656976 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x65643A20494E56414C49445F455243313135355F524543454956454400000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A204E4F4E5F4E55 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4C4C5F4D53475F56414C55450000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236465706F7369743A205452414E5346 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x45525F4641494C45440000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D657461536166655472616E7366657246726F6D PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F524543495049454E5400000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F5349474E415455524500000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x41 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236F6E45524331313535426174636852 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x656365697665643A20494E56414C49445F455243313135355F52454345495645 PUSH1 0x60 DUP3 ADD MSTORE PUSH32 0x4400000000000000000000000000000000000000000000000000000000000000 PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2C SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6574614552433230577261707065722377697468647261773A20494E56414C PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x49445F524543495049454E540000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x31 SWAP1 DUP3 ADD MSTORE PUSH32 0x4D657461455243323057726170706572236765744964416464726573733A2055 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4E524547495354455245445F544F4B454E000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20455243 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x32305F5452414E534645525F4641494C45440000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D6574615361666542617463685472616E736665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7246726F6D3A20494E56414C49445F524543495049454E540000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2A SWAP1 DUP3 ADD MSTORE PUSH32 0x4D6574614552433230577261707065722377697468647261773A205452414E53 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4645525F4641494C454400000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2F SWAP1 DUP3 ADD MSTORE PUSH32 0x4D65746145524332305772617070657223676574546F6B656E49443A20554E52 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4547495354455245445F544F4B454E0000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2F SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F4E4F4E43450000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20554E53 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x5550504F525445445F544F4B454E000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x3F01 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3F1D JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x3F3B JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F82 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F6A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x6BE JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3FB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x3FB5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD 0x4C PUSH10 0x62427974657323706F70 0x4C PUSH2 0x7374 TIMESTAMP PUSH26 0x74653A20475245415445525F5448414E5F5A45524F5F4C454E47 SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 SSTORE 0x4E MSTORE8 SSTORE POP POP 0x4F MSTORE SLOAD GASLIMIT DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4C 0x4C GASLIMIT SELFBALANCE COINBASE 0x4C 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F CODECOPY CALLDATACOPY 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E GASLIMIT MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F SLOAD 0x48 COINBASE 0x4E 0x5F ADDRESS 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT 0x4C PUSH10 0x62427974657323726561 PUSH5 0x4279746573 CALLER ORIGIN GASPRICE KECCAK256 SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F 0x4F MSTORE 0x5F GASLIMIT MLOAD SSTORE COINBASE 0x4C 0x5F SLOAD 0x4F 0x5F CALLER ORIGIN 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIFFICULTY 0xCD 0xDB MULMOD SHL PUSH18 0xCD6A1F7302A3257892B47A563A3EF597C504 0xD3 0x27 0xAF PUSH30 0x9AD101FF64736F6C63430007040033000000000000000000000000000000 ",
              "sourceMap": "746:9654:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2122:43;1062:3;2143:10;2155:9;2122:7;:43::i;:::-;746:9654;;;;;7127:132:21;;;;;;;;;;-1:-1:-1;7127:132:21;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10131:266:12;;;;;;;;;;-1:-1:-1;10131:266:12;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11349:110:22:-;;;;;;;;;;-1:-1:-1;11349:110:22;;;;;:::i;:::-;;:::i;2312:522:21:-;;;;;;;;;;-1:-1:-1;2312:522:21;;;;;:::i;:::-;;:::i;7539:495::-;;;;;;;;;;-1:-1:-1;7539:495:21;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7663:212:12:-;;;;;;;;;;-1:-1:-1;7663:212:12;;;;;:::i;:::-;;:::i;8092:213::-;;;;;;;;;;-1:-1:-1;8092:213:12;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2584:1304::-;;;;;;:::i;:::-;;:::i;8380:79::-;;;;;;;;;;;;;:::i;6135:230:21:-;;;;;;;;;;-1:-1:-1;6135:230:21;;;;;:::i;:::-;;:::i;4970:1709:22:-;;;;;;;;;;-1:-1:-1;4970:1709:22;;;;;:::i;:::-;;:::i;6810:632:12:-;;;;;;;;;;-1:-1:-1;6810:632:12;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2630:1583:22:-;;;;;;;;;;-1:-1:-1;2630:1583:22;;;;;:::i;:::-;;:::i;4313:174:12:-;;;;;;;;;;-1:-1:-1;4313:174:12;;;;;:::i;:::-;;:::i;6627:160:21:-;;;;;;;;;;-1:-1:-1;6627:160:21;;;;;:::i;:::-;;:::i;5895:489:12:-;;;;;;;;;;-1:-1:-1;5895:489:12;;;;;:::i;:::-;;:::i;1373:556:21:-;;;;;;;;;;-1:-1:-1;1373:556:21;;;;;:::i;:::-;;:::i;7553:950:22:-;;;;;;;;;;-1:-1:-1;7553:950:22;;;;;:::i;:::-;;:::i;2047:3179:32:-;;;;;;;;;;-1:-1:-1;2047:3179:32;;;;;:::i;:::-;;:::i;2584:1304:12:-;2688:26;;;2680:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;2814:10;2871:21;;;1062:3;2871:21;2867:953;;2945:9;:14;2937:71;;;;;;;;;;;;:::i;:::-;3016:62;;;;;:27;;;;;;:62;;3044:10;;3064:4;;3071:6;;3016:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3094:14;:12;:14::i;:::-;3086:68;;;;;;;;;;;;:::i;:::-;3214:19;;;3194:17;3214:19;;;:11;:19;;;;;;3287:14;3283:413;;3313:7;:12;;3324:1;3313:12;;;;;-1:-1:-1;3464:15:12;;;:11;:15;;;;;;;;:24;;;;;;;;;;;;;3525:19;;:11;:19;;;;;;;:24;;;3618:29;3313:12;;-1:-1:-1;3618:29:12;;;;3464:24;;3313:12;;3618:29;:::i;:::-;;;;;;;;3283:413;;;3678:9;3673:14;;3283:413;2867:953;;;;3735:9;3725:6;:19;3717:77;;;;;;;;;;;;:::i;:::-;-1:-1:-1;953:3:12;2867:953;3850:33;3856:10;3868:2;3872:6;3850:33;;;;;;;;;;;;:5;:33::i;:::-;2584:1304;;;;:::o;7127:132:21:-;7233:16;;;;;7209:7;7233:16;;;;;;;;;;;:21;;;;;;;;;7127:132::o;10131:266:12:-;10208:4;10228:40;;;10243:25;10228:40;;:91;;-1:-1:-1;10278:41:12;;;10293:26;10278:41;10228:91;:156;;;-1:-1:-1;10330:54:12;;;10345:39;10330:54;10228:156;10220:164;;10131:266;;;;:::o;11349:110:22:-;11439:15;;11409:13;11439:15;;;:6;:15;;;;;;;11349:110::o;2312:522:21:-;2498:10;:19;;;;;2497:60;;;2522:35;2539:5;2546:10;2522:16;:35::i;:::-;2489:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2623:17;;;2615:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2700:50;2723:5;2730:3;2735:4;2741:8;2700:22;:50::i;:::-;2756:73;2784:5;2791:3;2796:4;2802:8;2812:9;2823:5;2756:27;:73::i;:::-;2312:522;;;;;:::o;7539:495::-;7646:16;7698:4;:11;7680:7;:14;:29;7672:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7782:30;7829:7;:14;7815:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7815:29:21;;7782:62;;7900:9;7895:108;7919:7;:14;7915:1;:18;7895:108;;;7967:8;:20;7976:7;7984:1;7976:10;;;;;;;;;;;;;;7967:20;;;;;;;;;;;;;;;:29;7988:4;7993:1;7988:7;;;;;;;;;;;;;;7967:29;;;;;;;;;;;;7948:13;7962:1;7948:16;;;;;;;;;;;;;;;;;:48;7935:3;;7895:108;;;-1:-1:-1;8016:13:21;7539:495;-1:-1:-1;;;7539:495:21:o;7663:212:12:-;7753:19;;;7720:15;7753:19;;;:11;:19;;;;;;7786:12;7778:72;;;;;;;;;;;;:::i;8092:213::-;8148:13;8177:16;;;:11;:16;;;;;;;;8207:21;8199:83;;;;;;;;;;;;:::i;8380:79::-;8447:7;;8380:79;:::o;6135:230:21:-;6267:10;6257:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;6312:48;;;;;;;6257:32;;6267:10;6312:48;;;;;;;;;;;6135:230;;:::o;4970:1709:22:-;5171:17;;;5163:86;;;;;;;;;;;;:::i;:::-;5276:25;5307:28;;:::i;:::-;5394:23;5420:342;5448:5;5461;9017:66;5494:22;;5526:5;5563:3;5627:4;5610:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;5600:33;;;;;;5670:8;5653:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;5643:37;;;;;;5690:9;:35;;5723:1;5690:35;;;5710:1;5690:35;5474:282;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5420:20;:342::i;:::-;5394:368;;5792:50;5815:5;5822:3;5827:4;5833:8;5792:22;:50::i;:::-;5888:9;5884:791;;;5947:10;5936:43;;;;;;;;;;;;:::i;:::-;5907:72;;;;;;;;6393:98;6421:5;6428:3;6433:4;6439:8;6449:10;:27;;;6478:12;6393:27;:98::i;:::-;6534:34;6550:5;6557:10;6534:15;:34::i;:::-;5884:791;;;6590:78;6618:5;6625:3;6630:4;6636:8;6646:9;6657:10;6590:27;:78::i;:::-;4970:1709;;;;;;;;;:::o;6810:632:12:-;6956:6;7030:10;7052:4;7030:27;7022:105;;;;;;;;;;;;:::i;:::-;7167:9;7161:235;7186:4;:11;7182:1;:15;7161:235;;;7248:21;7261:4;7266:1;7261:7;;;;;;;;;;;;;;7248:12;:21::i;:::-;;7337:52;7355:4;7362:5;7369:4;7374:1;7369:7;;;;;;;;;;;;;;7378;7386:1;7378:10;;;;;;;;;;;;;;7337:9;:52::i;:::-;7199:3;;7161:235;;;-1:-1:-1;7409:28:12;;6810:632;-1:-1:-1;;;;;;6810:632:12:o;2630:1583:22:-;2806:17;;;2798:81;;;;;;;;;;;;:::i;:::-;2906:25;2937:28;;:::i;:::-;3024:23;3050:276;3078:5;3091;8788:66;3078:5;3187:3;3224;3237:7;3254:9;:35;;3287:1;3254:35;;3050:276;3024:302;;3355:43;3373:5;3380:3;3385;3390:7;3355:17;:43::i;:::-;3443:9;3439:770;;;3502:10;3491:43;;;;;;;;;;;;:::i;:::-;3462:72;;;;;;;;3948:91;3971:5;3978:3;3983;3988:7;3997:10;:27;;;4026:12;3948:22;:91::i;3439:770::-;4131:71;4154:5;4161:3;4166;4171:7;4180:9;4191:10;4131:22;:71::i;4313:174:12:-;4397:15;4415:18;4426:6;4415:10;:18::i;:::-;4397:36;;4439:43;4449:10;4461:3;4466:7;4475:6;4439:9;:43::i;6627:160:21:-;6754:17;;;;6722:15;6754:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;6627:160::o;5895:489:12:-;6016:6;6090:10;6112:4;6090:27;6082:100;;;;;;;;;;;;:::i;:::-;6188:17;6201:3;6188:12;:17::i;:::-;;6299:44;6317:4;6324:5;6331:3;6336:6;6299:9;:44::i;:::-;-1:-1:-1;6357:22:12;5895:489;;;;;;;:::o;1373:556:21:-;1514:10;:19;;;;;1513:60;;;1538:35;1555:5;1562:10;1538:16;:35::i;:::-;1505:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:17;;;1626:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:43;1827:5;1834:3;1839;1844:7;1809:17;:43::i;:::-;1858:66;1881:5;1888:3;1893;1898:7;1907:9;1918:5;1858:22;:66::i;7553:950:22:-;7763:23;7789:380;7817:6;7831:5;9227:66;7817:6;7963:9;8030;:35;;8063:1;8030:35;;;8050:1;8030:35;8097:9;:35;;8130:1;8097:35;;;8117:1;8097:35;7844:319;;;;;;;;;;;;:::i;7789:380::-;8206:17;;;;;;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;:40;;;;;;;;;;8276:44;7763:406;;-1:-1:-1;8206:28:22;;8276:44;;;;8206:40;;8276:44;:::i;:::-;;;;;;;;8363:9;8359:140;;;8382:28;;:::i;:::-;8424:10;8413:36;;;;;;;;;;;;:::i;:::-;8382:67;;8457:35;8473:6;8481:10;8457:15;:35::i;:::-;8359:140;;7553:950;;;;;;:::o;2047:3179:32:-;2204:12;2255:1;2241:4;:11;:15;2226:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2361:30;;;2346:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2515:22;2546:18;:4;:16;:18::i;:::-;2540:25;;;-1:-1:-1;2649:29:32;2624:55;;2609:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:27;2834:16;2820:31;;;;;;;;;;2790:61;-1:-1:-1;2903:7:32;;;;;3272:13;:38;;;;;;;;;3268:1597;;;3320:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3268:1597;3450:20;3433:13;:37;;;;;;;;;3429:1436;;;3497:4;:11;3512:2;3497:17;3480:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3601:19;:4;3618:1;3601:16;:19::i;:::-;3597:23;-1:-1:-1;3632:20:32;:4;3649:2;3632:16;:20::i;:::-;3628:24;;3670:4;3675:2;3670:8;;;;;;;;;;;;;;;;3664:15;;3660:19;;3699:25;3709:5;3716:1;3719;3722;3699:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3699:25:32;;;;;3742:27;;;;;;;;-1:-1:-1;3777:14:32;;-1:-1:-1;;;;;;;3777:14:32;3429:1436;3894:21;3877:13;:38;;;;;;;;;3873:992;;;3942:4;:11;3957:2;3942:17;3925:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4046:19;:4;4063:1;4046:16;:19::i;:::-;4042:23;-1:-1:-1;4077:20:32;:4;4094:2;4077:16;:20::i;:::-;4073:24;;4115:4;4120:2;4115:8;;;;;;;;;;;;;;4173:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4163:70;;;;;;;;;-1:-1:-1;4144:130:32;;;;;;;;;;4115:8;;;;;4144:130;;;;;;;;;;;;;;;;;;;;4115:8;;-1:-1:-1;4144:130:32;;;;;;;4115:8;;-1:-1:-1;4144:130:32;;;;;;;;;;;;;;;;;;;;;;;;;3873:992;4444:25;4427:13;:42;;;;;;;;;4423:442;;;4511:60;;;;;;;;;;;;;;;;;;;;:47;;;;;;4559:5;;4566:4;;4511:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4511:60:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4511:60:32;4489:82;;:18;:82;;-1:-1:-1;4579:14:32;;-1:-1:-1;;;;;;4579:14:32;4423:442;4699:27;4682:13;:44;;;;;;;;;4678:187;;;4776:60;;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;;;4824:5;;4831:4;;4776:60;;;;;;;;;;;;;-1:-1:-1;4776:60:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4776:60:32;4746:90;;:26;:90;;-1:-1:-1;4844:14:32;;-1:-1:-1;;;;;;4844:14:32;4678:187;5153:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:3179;;;;;;;:::o;8905:745:12:-;8959:4;;9154:16;9225:47;;;;9335:4;9330:192;;;;9147:456;;9225:47;9261:1;9246:16;;9225:47;;9330:192;9423:4;9418:3;9413;9398:30;9508:3;9502:10;9487:25;;9147:456;-1:-1:-1;9629:16:12;;;-1:-1:-1;8905:745:12;:::o;716:401:24:-;855:13;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:31;;878:7;855:22;:31::i;:::-;834:13;;;:8;:13;;;;;;;;;;;:18;;;;;;;;:52;;;;916:59;;;;;;;;;;;;;834:13;;:8;;931:10;;916:59;;;;;;;;1039:73;1070:3;1076;1081;1086:7;1095:9;1106:5;1039:22;:73::i;4452:670:21:-;4606:8;:15;4591:4;:11;:30;4583:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4743:11;;4723:17;4792:243;4816:9;4812:1;:13;4792:243;;;4915:41;4944:8;4953:1;4944:11;;;;;;;;;;;;;;4915:8;:15;4924:5;4915:15;;;;;;;;;;;;;;;:24;4931:4;4936:1;4931:7;;;;;;;;;;;;;;4915:24;;;;;;;;;;;;:28;;:41;;;;:::i;:::-;4888:8;:15;4897:5;4888:15;;;;;;;;;;;;;;;:24;4904:4;4909:1;4904:7;;;;;;;;;;;;;;4888:24;;;;;;;;;;;:68;;;;4989:39;5016:8;5025:1;5016:11;;;;;;;;;;;;;;4989:8;:13;4998:3;4989:13;;;;;;;;;;;;;;;:22;5003:4;5008:1;5003:7;;;;;;;;;;;;;;4989:22;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;4964:8;:13;4973:3;4964:13;;;;;;;;;;;;;;;:22;4978:4;4983:1;4978:7;;;;;;;;;;;;;;;;;;;4964:22;;;;;;;;;;-1:-1:-1;4964:22:21;:64;4827:3;;4792:243;;;;5097:3;5064:53;;5090:5;5064:53;;5078:10;5064:53;;;5102:4;5108:8;5064:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:670;;;;;:::o;5235:503::-;5456:16;:3;:14;;;:16::i;:::-;5452:282;;;5482:13;5520:3;5498:49;;;5553:9;5564:10;5576:5;5583:4;5589:8;5599:5;5498:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5498:107:21;;-1:-1:-1;5621:38:21;;;5631:28;5621:38;5613:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9962:1243:22;10093:23;10126:16;10218:8;10207:36;;;;;;;;;;;;:::i;:::-;10327:15;;;10304:20;10327:15;;;:6;:15;;;;;;10187:56;;-1:-1:-1;10187:56:22;;-1:-1:-1;10327:15:22;10412:19;10187:56;10428:2;10412:15;:19::i;:::-;10404:28;-1:-1:-1;10528:21:22;;;;;;10527:57;;;10564:12;10579:3;10564:18;10555:5;:28;10527:57;10512:135;;;;;;;;;;;;:::i;:::-;10687:12;10702:89;10747:11;10760:5;10777:10;10767:21;;;;;;10730:59;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10720:70;;;;;;10702:17;:89::i;:::-;10687:104;;10846:21;10887:11;10900:5;10907:10;10870:48;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;10954:15;;;;;;;:6;10870:48;10954:15;;;;;10980:1;10972:9;;10954:27;;;;10870:48;;-1:-1:-1;10954:15:22;;10992:31;;;;;:::i;:::-;;;;;;;;11075:46;11092:7;11101:4;11107:8;11117:3;11075:16;:46::i;:::-;11067:110;;;;;;;;;;;;:::i;:::-;11183:17;;;;;9962:1243;;;;;:::o;11901:1695::-;12029:21;12059:29;:2;:15;;;:27;:29::i;:::-;12053:36;;;-1:-1:-1;12170:19:22;12146:44;;12131:121;;;;;;;;;;;;:::i;:::-;12310:25;12351:15;12338:29;;;;;;;;;;12481:9;;12598:15;;;;12310:57;;-1:-1:-1;12394:20:22;;;;;;12598:29;;;:60;;12643:2;:15;;;12598:60;;;12630:10;12598:60;12583:75;-1:-1:-1;12713:20:22;12697:12;:36;;;;;;;;;12693:899;;;12780:2;:15;;;12769:47;;;;;;;;;;;;:::i;:::-;12743:73;;-1:-1:-1;12743:73:22;-1:-1:-1;12877:29:22;;;12901:4;12877:29;12873:458;;;12918:52;12936:5;12943:12;12957:7;12966:3;12918:17;:52::i;:::-;13094:72;13117:5;13124:12;13138:7;13147:9;13158:3;13094:72;;;;;;;;;;;;:22;:72::i;:::-;12873:458;;;13244:78;;;;;:39;;;;;;:78;;13284:5;;13291:12;;13305:7;;13314:3;;13244:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12873:458;12693:899;;;13404:2;:15;;;13393:38;;;;;;;;;;;;:::i;:::-;13456:59;;;;;13378:53;;-1:-1:-1;13456:33:22;;;;;;:59;;13490:5;;13497:12;;13511:3;;13456:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13439:146;;;;;;;;;;;;:::i;:::-;11901:1695;;;;;;;;:::o;4870:648:12:-;5021:30;5027:5;5034:8;5044:6;5021:5;:30::i;:::-;953:3;5100:8;:18;5096:416;;5128:13;5144:21;;;:11;:21;;;;;;;;5173:35;;;;;5144:21;;;;;;;5173:22;;:35;;5196:3;;5201:6;;5173:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5224:14;:12;:14::i;:::-;5216:69;;;;;;;;;;;;:::i;:::-;5096:416;;;;5315:17;;;5307:74;;;;;;;;;;;;:::i;:::-;5390:12;5408:3;:8;;5424:6;5408:27;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5389:46;;;5451:7;5443:62;;;;;;;;;;;;:::i;3224:367:21:-;3376:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;3401:7;3376:24;:33::i;:::-;3353:15;;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;3455:13;;;;;;;;;;;:18;;;;;;;;:31;;3478:7;3455:22;:31::i;:::-;3434:13;;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:52;;;;3534;;;;;;;;;;;;;3434:13;;3534:52;;;;3549:10;;3534:52;;;;;;;;;;;3224:367;;;;:::o;3699:456::-;3891:16;:3;:14;;;:16::i;:::-;3887:264;;;3917:13;3955:3;3933:44;;;3983:9;3994:10;4006:5;4013:3;4018:7;4027:5;3933:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3933:100:21;;-1:-1:-1;4049:32:21;;;4059:22;4049:32;4041:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1033:396:29;1105:13;1154:1;1143;:8;:12;1128:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:1;1279;1268;:8;:12;1266:15;;;;;;;;;;;;1364:8;;1360:16;;1383:17;;;-1:-1:-1;1266:15:29;;;1033:396::o;1792:436::-;1891:14;1942:5;1950:2;1942:10;1930:1;:8;:22;;1915:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2185:13:29;2101:2;2185:13;2179:20;;1792:436::o;1419:158:31:-;1477:7;1504:5;;;1523:6;;;;1515:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:1;1419:158;-1:-1:-1;;;1419:158:31:o;1186:::-;1244:7;1272:1;1267;:6;;1259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1319:5:31;;;1186:158::o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;882:52;-1:-1:-1;;541:398:27:o;1351:336:30:-;1513:13;;;;;;;;;;;;;;;;;;;1557:88;;883:66;1557:88;;;;1628:4;1557:88;;;;;;;;;;;;;;;;;;;1536:119;;;;;;;;;;1487:194;;1439:14;;1536:119;;1665:10;;1487:194;;;;;1513:13;1487:194;;1513:13;1487:194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1487:194:30;;;;;;;-1:-1:-1;1487:194:30;;;;;;;;;;;;;;;1470:212;;;;;;1351:336;-1:-1:-1;;;1351:336:30:o;2456:257:24:-;2584:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;2609:7;2584:24;:33::i;:::-;2561:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;2647:61;;;;;;;;;;;;;2561:8;;2662:10;;2647:61;;;;;;;;;;2456:257;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:692:33:-;;127:3;120:4;112:6;108:17;104:27;94:2;;149:5;142;135:20;94:2;193:6;180:20;218:69;233:53;279:6;233:53;:::i;:::-;218:69;:::i;:::-;321:21;;;209:78;-1:-1:-1;361:4:33;381:14;;;;415:15;;;461;;;449:28;;445:37;;442:46;-1:-1:-1;439:2:33;;;501:1;498;491:12;439:2;523:1;533:167;547:6;544:1;541:13;533:167;;;608:17;;596:30;;646:12;;;;678;;;;569:1;562:9;533:167;;;537:3;;;;;84:622;;;;:::o;711:460::-;;808:3;801:4;793:6;789:17;785:27;775:2;;830:5;823;816:20;775:2;874:6;861:20;899:53;914:37;944:6;914:37;:::i;899:53::-;890:62;;975:6;968:5;961:21;1029:3;1022:4;1013:6;1005;1001:19;997:30;994:39;991:2;;;1046:1;1043;1036:12;991:2;1109:6;1102:4;1094:6;1090:17;1083:4;1076:5;1072:16;1059:57;1163:1;1136:18;;;1156:4;1132:29;1125:40;1140:5;765:406;-1:-1:-1;;765:406:33:o;1176:424::-;;1284:3;1277:4;1269:6;1265:17;1261:27;1251:2;;1306:5;1299;1292:20;1251:2;1343:6;1337:13;1368:53;1383:37;1413:6;1383:37;:::i;1368:53::-;1359:62;;1444:6;1437:5;1430:21;1498:3;1491:4;1482:6;1474;1470:19;1466:30;1463:39;1460:2;;;1515:1;1512;1505:12;1460:2;1528:66;1587:6;1580:4;1573:5;1569:16;1562:4;1554:6;1550:17;1528:66;:::i;:::-;;1241:359;;;;:::o;1605:812::-;;1724:4;1712:9;1707:3;1703:19;1699:30;1696:2;;;1746:5;1739;1732:20;1696:2;1783;1777:9;1825:4;1817:6;1813:17;1849:18;1917:6;1905:10;1902:22;1897:2;1885:10;1882:18;1879:46;1876:2;;;1928:9;1876:2;1959:10;1955:2;1948:22;1988:6;1979:15;;2024:9;2018:16;2010:6;2003:32;2089:2;2078:9;2074:18;2068:25;2063:2;2055:6;2051:15;2044:50;2139:2;2128:9;2124:18;2118:25;2103:40;;2152:35;2179:7;2152:35;:::i;:::-;2220:7;2215:2;2207:6;2203:15;2196:32;2272:2;2261:9;2257:18;2251:25;2237:39;;2299:2;2291:6;2288:14;2285:2;;;2315:1;2312;2305:12;2285:2;;2352:58;2406:3;2397:6;2386:9;2382:22;2352:58;:::i;:::-;2347:2;2339:6;2335:15;2328:83;;;1686:731;;;;:::o;2422:259::-;;2534:2;2522:9;2513:7;2509:23;2505:32;2502:2;;;2555:6;2547;2540:22;2502:2;2599:9;2586:23;2618:33;2645:5;2618:33;:::i;2686:271::-;;2817:2;2805:9;2796:7;2792:23;2788:32;2785:2;;;2838:6;2830;2823:22;2785:2;2875:9;2869:16;2894:33;2921:5;2894:33;:::i;2962:332::-;;;3110:2;3098:9;3089:7;3085:23;3081:32;3078:2;;;3131:6;3123;3116:22;3078:2;3168:9;3162:16;3187:33;3214:5;3187:33;:::i;:::-;3284:2;3269:18;;;;3263:25;3239:5;;3263:25;;-1:-1:-1;;;3068:226:33:o;3299:402::-;;;3428:2;3416:9;3407:7;3403:23;3399:32;3396:2;;;3449:6;3441;3434:22;3396:2;3493:9;3480:23;3512:33;3539:5;3512:33;:::i;:::-;3564:5;-1:-1:-1;3621:2:33;3606:18;;3593:32;3634:35;3593:32;3634:35;:::i;:::-;3688:7;3678:17;;;3386:315;;;;;:::o;3706:1137::-;;;;;;3953:3;3941:9;3932:7;3928:23;3924:33;3921:2;;;3975:6;3967;3960:22;3921:2;4019:9;4006:23;4038:33;4065:5;4038:33;:::i;:::-;4090:5;-1:-1:-1;4147:2:33;4132:18;;4119:32;4160:35;4119:32;4160:35;:::i;:::-;4214:7;-1:-1:-1;4272:2:33;4257:18;;4244:32;4295:18;4325:14;;;4322:2;;;4357:6;4349;4342:22;4322:2;4385:67;4444:7;4435:6;4424:9;4420:22;4385:67;:::i;:::-;4375:77;;4505:2;4494:9;4490:18;4477:32;4461:48;;4534:2;4524:8;4521:16;4518:2;;;4555:6;4547;4540:22;4518:2;4583:69;4644:7;4633:8;4622:9;4618:24;4583:69;:::i;:::-;4573:79;;4705:3;4694:9;4690:19;4677:33;4661:49;;4735:2;4725:8;4722:16;4719:2;;;4756:6;4748;4741:22;4719:2;;4784:53;4829:7;4818:8;4807:9;4803:24;4784:53;:::i;:::-;4774:63;;;3911:932;;;;;;;;:::o;4848:478::-;;;;5002:2;4990:9;4981:7;4977:23;4973:32;4970:2;;;5023:6;5015;5008:22;4970:2;5067:9;5054:23;5086:33;5113:5;5086:33;:::i;:::-;5138:5;-1:-1:-1;5195:2:33;5180:18;;5167:32;5208:35;5167:32;5208:35;:::i;:::-;4960:366;;5262:7;;-1:-1:-1;;;5316:2:33;5301:18;;;;5288:32;;4960:366::o;5331:768::-;;;;;;5528:3;5516:9;5507:7;5503:23;5499:33;5496:2;;;5550:6;5542;5535:22;5496:2;5594:9;5581:23;5613:33;5640:5;5613:33;:::i;:::-;5665:5;-1:-1:-1;5722:2:33;5707:18;;5694:32;5735:35;5694:32;5735:35;:::i;:::-;5789:7;-1:-1:-1;5843:2:33;5828:18;;5815:32;;-1:-1:-1;5894:2:33;5879:18;;5866:32;;-1:-1:-1;5949:3:33;5934:19;;5921:33;5977:18;5966:30;;5963:2;;;6014:6;6006;5999:22;5963:2;6042:51;6085:7;6076:6;6065:9;6061:22;6042:51;:::i;6104:1267::-;;;;;;;6357:3;6345:9;6336:7;6332:23;6328:33;6325:2;;;6379:6;6371;6364:22;6325:2;6423:9;6410:23;6442:33;6469:5;6442:33;:::i;:::-;6494:5;-1:-1:-1;6551:2:33;6536:18;;6523:32;6564:35;6523:32;6564:35;:::i;:::-;6618:7;-1:-1:-1;6676:2:33;6661:18;;6648:32;6699:18;6729:14;;;6726:2;;;6761:6;6753;6746:22;6726:2;6789:67;6848:7;6839:6;6828:9;6824:22;6789:67;:::i;:::-;6779:77;;6909:2;6898:9;6894:18;6881:32;6865:48;;6938:2;6928:8;6925:16;6922:2;;;6959:6;6951;6944:22;6922:2;6987:69;7048:7;7037:8;7026:9;7022:24;6987:69;:::i;:::-;6977:79;;7108:3;7097:9;7093:19;7080:33;7065:48;;7122:32;7146:7;7122:32;:::i;:::-;7173:7;;-1:-1:-1;7233:3:33;7218:19;;7205:33;;7250:16;;;7247:2;;;7284:6;7276;7269:22;7247:2;;7312:53;7357:7;7346:8;7335:9;7331:24;7312:53;:::i;:::-;7302:63;;;6315:1056;;;;;;;;:::o;7376:1129::-;;;;;;7615:3;7603:9;7594:7;7590:23;7586:33;7583:2;;;7637:6;7629;7622:22;7583:2;7681:9;7668:23;7700:33;7727:5;7700:33;:::i;:::-;7752:5;-1:-1:-1;7809:2:33;7794:18;;7781:32;7822:35;7781:32;7822:35;:::i;:::-;7876:7;-1:-1:-1;7934:2:33;7919:18;;7906:32;7957:18;7987:14;;;7984:2;;;8019:6;8011;8004:22;8510:898;;;;;;8693:3;8681:9;8672:7;8668:23;8664:33;8661:2;;;8715:6;8707;8700:22;8661:2;8759:9;8746:23;8778:33;8805:5;8778:33;:::i;:::-;8830:5;-1:-1:-1;8887:2:33;8872:18;;8859:32;8900:35;8859:32;8900:35;:::i;:::-;8954:7;-1:-1:-1;9013:2:33;8998:18;;8985:32;9026;8985;9026;:::i;:::-;9077:7;-1:-1:-1;9136:2:33;9121:18;;9108:32;9149;9108;9149;:::i;:::-;9200:7;-1:-1:-1;9258:3:33;9243:19;;9230:33;9286:18;9275:30;;9272:2;;;9323:6;9315;9308:22;9413:470;;;;9559:2;9547:9;9538:7;9534:23;9530:32;9527:2;;;9580:6;9572;9565:22;9888:898;;;;;;;10091:3;10079:9;10070:7;10066:23;10062:33;10059:2;;;10113:6;10105;10098:22;10059:2;10157:9;10144:23;10176:33;10203:5;10176:33;:::i;:::-;10228:5;-1:-1:-1;10285:2:33;10270:18;;10257:32;10298:35;10257:32;10298:35;:::i;:::-;10352:7;-1:-1:-1;10406:2:33;10391:18;;10378:32;;-1:-1:-1;10457:2:33;10442:18;;10429:32;;-1:-1:-1;10513:3:33;10498:19;;10485:33;10527:32;10485:33;10527:32;:::i;:::-;10578:7;-1:-1:-1;10636:3:33;10621:19;;10608:33;10664:18;10653:30;;10650:2;;;10701:6;10693;10686:22;10650:2;10729:51;10772:7;10763:6;10752:9;10748:22;10729:51;:::i;10791:760::-;;;;;;10980:3;10968:9;10959:7;10955:23;10951:33;10948:2;;;11002:6;10994;10987:22;11556:396;;;11682:2;11670:9;11661:7;11657:23;11653:32;11650:2;;;11703:6;11695;11688:22;11650:2;11747:9;11734:23;11766:33;11793:5;11766:33;:::i;:::-;11818:5;-1:-1:-1;11875:2:33;11860:18;;11847:32;11888;11847;11888;:::i;11957:779::-;;;;;12138:3;12126:9;12117:7;12113:23;12109:33;12106:2;;;12160:6;12152;12145:22;12106:2;12204:9;12191:23;12223:33;12250:5;12223:33;:::i;:::-;12275:5;-1:-1:-1;12327:2:33;12312:18;;12299:32;;-1:-1:-1;12382:2:33;12367:18;;12354:32;12405:18;12435:14;;;12432:2;;;12467:6;12459;12452:22;12432:2;12495:51;12538:7;12529:6;12518:9;12514:22;12495:51;:::i;:::-;12485:61;;12599:2;12588:9;12584:18;12571:32;12555:48;;12628:2;12618:8;12615:16;12612:2;;;12649:6;12641;12634:22;12612:2;;12677:53;12722:7;12711:8;12700:9;12696:24;12677:53;:::i;:::-;12667:63;;;12096:640;;;;;;;:::o;12741:327::-;;;12870:2;12858:9;12849:7;12845:23;12841:32;12838:2;;;12891:6;12883;12876:22;12838:2;12935:9;12922:23;12954:33;12981:5;12954:33;:::i;:::-;13006:5;13058:2;13043:18;;;;13030:32;;-1:-1:-1;;;12828:240:33:o;13073:1315::-;;;13252:2;13240:9;13231:7;13227:23;13223:32;13220:2;;;13273:6;13265;13258:22;13220:2;13318:9;13305:23;13347:18;13388:2;13380:6;13377:14;13374:2;;;13409:6;13401;13394:22;13374:2;13452:6;13441:9;13437:22;13427:32;;13497:7;13490:4;13486:2;13482:13;13478:27;13468:2;;13524:6;13516;13509:22;13468:2;13569;13556:16;13592:69;13607:53;13653:6;13607:53;:::i;13592:69::-;13683:3;13707:6;13702:3;13695:19;13733:4;13762:2;13757:3;13753:12;13746:19;;13793:2;13789;13785:11;13846:7;13841:2;13835;13827:6;13823:15;13819:2;13815:24;13811:33;13808:46;13805:2;;;13872:6;13864;13857:22;13805:2;13899:6;13890:15;;13914:244;13928:6;13925:1;13922:13;13914:244;;;14003:3;13990:17;14020:33;14047:5;14020:33;:::i;:::-;14066:18;;13950:1;13943:9;;;;;14104:12;;;;14136;;13914:244;;;-1:-1:-1;14177:5:33;;-1:-1:-1;14220:18:33;;14207:32;;-1:-1:-1;;;14251:16:33;;;14248:2;;;14285:6;14277;14270:22;14248:2;;14313:69;14374:7;14363:8;14352:9;14348:24;14313:69;:::i;:::-;14303:79;;;13210:1178;;;;;:::o;14393:257::-;;14513:2;14501:9;14492:7;14488:23;14484:32;14481:2;;;14534:6;14526;14519:22;14481:2;14571:9;14565:16;14590:30;14614:5;14590:30;:::i;14655:352::-;;14766:2;14754:9;14745:7;14741:23;14737:32;14734:2;;;14787:6;14779;14772:22;14734:2;14831:9;14818:23;14881:66;14874:5;14870:78;14863:5;14860:89;14850:2;;14968:6;14960;14953:22;15012:592;;;15170:2;15158:9;15149:7;15145:23;15141:32;15138:2;;;15191:6;15183;15176:22;15138:2;15229:9;15223:16;15258:18;15299:2;15291:6;15288:14;15285:2;;;15320:6;15312;15305:22;15285:2;15348:62;15402:7;15393:6;15382:9;15378:22;15348:62;:::i;:::-;15338:72;;15456:2;15445:9;15441:18;15435:25;15419:41;;15485:2;15475:8;15472:16;15469:2;;;15506:6;15498;15491:22;15469:2;;15534:64;15590:7;15579:8;15568:9;15564:24;15534:64;:::i;15609:389::-;;15760:2;15748:9;15739:7;15735:23;15731:32;15728:2;;;15781:6;15773;15766:22;15728:2;15819:9;15813:16;15852:18;15844:6;15841:30;15838:2;;;15889:6;15881;15874:22;15838:2;15917:75;15984:7;15975:6;15964:9;15960:22;15917:75;:::i;16003:624::-;;;16180:2;16168:9;16159:7;16155:23;16151:32;16148:2;;;16201:6;16193;16186:22;16148:2;16239:9;16233:16;16268:18;16309:2;16301:6;16298:14;16295:2;;;16330:6;16322;16315:22;16295:2;16358:75;16425:7;16416:6;16405:9;16401:22;16358:75;:::i;16632:190::-;;16744:2;16732:9;16723:7;16719:23;16715:32;16712:2;;;16765:6;16757;16750:22;16712:2;-1:-1:-1;16793:23:33;;16702:120;-1:-1:-1;16702:120:33:o;16827:545::-;17045:13;;16827:545;;17019:3;;17098:4;17125:15;;;16827:545;17170:175;17184:6;17181:1;17178:13;17170:175;;;17247:13;;17233:28;;17283:14;;;;17320:15;;;;17206:1;17199:9;17170:175;;;-1:-1:-1;17361:5:33;;16996:376;-1:-1:-1;;;;;;16996:376:33:o;17377:437::-;;17600:6;17594:13;17616:53;17662:6;17657:3;17650:4;17642:6;17638:17;17616:53;:::i;:::-;17691:16;;;;17716:21;;;-1:-1:-1;17764:4:33;17753:16;;17746:32;17805:2;17794:14;;17570:244;-1:-1:-1;17570:244:33:o;17819:546::-;;18060:6;18054:13;18076:53;18122:6;18117:3;18110:4;18102:6;18098:17;18076:53;:::i;:::-;18151:16;;18176:21;;;18222:13;;18244:68;18222:13;18296:4;18285:16;;;;18266:17;;18244:68;:::i;:::-;18332:20;18354:4;18328:31;;18030:335;-1:-1:-1;;;;;18030:335:33:o;18370:205::-;18570:3;18561:14::o;18580:226::-;18756:42;18744:55;;;;18726:74;;18714:2;18699:18;;18681:125::o;18811:414::-;19039:42;19108:15;;;19090:34;;19160:15;;;;19155:2;19140:18;;19133:43;19207:2;19192:18;;19185:34;;;;19017:2;19002:18;;18984:241::o;19230:305::-;19442:42;19430:55;;;;19412:74;;19517:2;19502:18;;19495:34;19400:2;19385:18;;19367:168::o;19943:653::-;20248:42;20317:15;;;20299:34;;20369:15;;;;20364:2;20349:18;;20342:43;20416:2;20401:18;;20394:34;20459:2;20444:18;;20437:34;;;;20508:3;20502;20487:19;;20480:32;;;19943:653;20528:19;;;20521:33;20586:3;20571:19;;20228:368::o;20903:635::-;21074:2;21126:21;;;21196:13;;21099:18;;;21218:22;;;20903:635;;21074:2;21297:15;;;;21271:2;21256:18;;;20903:635;21343:169;21357:6;21354:1;21351:13;21343:169;;;21418:13;;21406:26;;21487:15;;;;21452:12;;;;21379:1;21372:9;21343:169;;;-1:-1:-1;21529:3:33;;21054:484;-1:-1:-1;;;;;;21054:484:33:o;21543:187::-;21708:14;;21701:22;21683:41;;21671:2;21656:18;;21638:92::o;21735:614::-;22022:25;;;22066:42;22144:15;;;22139:2;22124:18;;22117:43;22196:15;;;;22191:2;22176:18;;22169:43;22243:2;22228:18;;22221:34;22286:3;22271:19;;22264:35;;;;22330:3;22315:19;;22308:35;22009:3;21994:19;;21976:373::o;22354:542::-;22613:25;;;22657:42;22735:15;;;22730:2;22715:18;;22708:43;22787:15;;;;22782:2;22767:18;;22760:43;22834:2;22819:18;;22812:34;;;;22877:3;22862:19;;22855:35;22600:3;22585:19;;22567:329::o;23520:248::-;23694:66;23682:79;;;;23664:98;;23652:2;23637:18;;23619:149::o;23773:409::-;23975:2;23957:21;;;24014:2;23994:18;;;23987:30;24053:34;24048:2;24033:18;;24026:62;24124:15;24119:2;24104:18;;24097:43;24172:3;24157:19;;23947:235::o;24187:407::-;24389:2;24371:21;;;24428:2;24408:18;;;24401:30;24467:34;24462:2;24447:18;;24440:62;24538:13;24533:2;24518:18;;24511:41;24584:3;24569:19;;24361:233::o;24599:424::-;24801:2;24783:21;;;24840:2;24820:18;;;24813:30;24879:34;24874:2;24859:18;;24852:62;24950:30;24945:2;24930:18;;24923:58;25013:3;24998:19;;24773:250::o;25028:408::-;25230:2;25212:21;;;25269:2;25249:18;;;25242:30;25308:34;25303:2;25288:18;;25281:62;25379:14;25374:2;25359:18;;25352:42;25426:3;25411:19;;25202:234::o;25441:405::-;25643:2;25625:21;;;25682:2;25662:18;;;25655:30;25721:34;25716:2;25701:18;;25694:62;25792:11;25787:2;25772:18;;25765:39;25836:3;25821:19;;25615:231::o;25851:415::-;26053:2;26035:21;;;26092:2;26072:18;;;26065:30;26131:34;26126:2;26111:18;;26104:62;26202:21;26197:2;26182:18;;26175:49;26256:3;26241:19;;26025:241::o;26271:415::-;26473:2;26455:21;;;26512:2;26492:18;;;26485:30;26551:34;26546:2;26531:18;;26524:62;26622:21;26617:2;26602:18;;26595:49;26676:3;26661:19;;26445:241::o;26691:469::-;26893:2;26875:21;;;26932:2;26912:18;;;26905:30;26971:34;26966:2;26951:18;;26944:62;27042:34;27037:2;27022:18;;27015:62;27114:3;27108;27093:19;;27086:32;27150:3;27135:19;;26865:295::o;27165:408::-;27367:2;27349:21;;;27406:2;27386:18;;;27379:30;27445:34;27440:2;27425:18;;27418:62;27516:14;27511:2;27496:18;;27489:42;27563:3;27548:19;;27339:234::o;27578:413::-;27780:2;27762:21;;;27819:2;27799:18;;;27792:30;27858:34;27853:2;27838:18;;27831:62;27929:19;27924:2;27909:18;;27902:47;27981:3;27966:19;;27752:239::o;27996:414::-;28198:2;28180:21;;;28237:2;28217:18;;;28210:30;28276:34;28271:2;28256:18;;28249:62;28347:20;28342:2;28327:18;;28320:48;28400:3;28385:19;;28170:240::o;28415:420::-;28617:2;28599:21;;;28656:2;28636:18;;;28629:30;28695:34;28690:2;28675:18;;28668:62;28766:26;28761:2;28746:18;;28739:54;28825:3;28810:19;;28589:246::o;28840:406::-;29042:2;29024:21;;;29081:2;29061:18;;;29054:30;29120:34;29115:2;29100:18;;29093:62;29191:12;29186:2;29171:18;;29164:40;29236:3;29221:19;;29014:232::o;29251:411::-;29453:2;29435:21;;;29492:2;29472:18;;;29465:30;29531:34;29526:2;29511:18;;29504:62;29602:17;29597:2;29582:18;;29575:45;29652:3;29637:19;;29425:237::o;29667:411::-;29869:2;29851:21;;;29908:2;29888:18;;;29881:30;29947:34;29942:2;29927:18;;29920:62;30018:17;30013:2;29998:18;;29991:45;30068:3;30053:19;;29841:237::o;30083:410::-;30285:2;30267:21;;;30324:2;30304:18;;;30297:30;30363:34;30358:2;30343:18;;30336:62;30434:16;30429:2;30414:18;;30407:44;30483:3;30468:19;;30257:236::o;30498:177::-;30644:25;;;30632:2;30617:18;;30599:76::o;30680:242::-;30750:2;30744:9;30780:17;;;30827:18;30812:34;;30848:22;;;30809:62;30806:2;;;30874:9;30806:2;30901;30894:22;30724:198;;-1:-1:-1;30724:198:33:o;30927:183::-;;31026:18;31018:6;31015:30;31012:2;;;31048:9;31012:2;-1:-1:-1;31099:4:33;31080:17;;;31076:28;;31002:108::o;31115:240::-;;31198:18;31190:6;31187:30;31184:2;;;31220:9;31184:2;-1:-1:-1;31268:4:33;31256:17;31275:66;31252:90;31344:4;31248:101;;31174:181::o;31360:258::-;31432:1;31442:113;31456:6;31453:1;31450:13;31442:113;;;31532:11;;;31526:18;31513:11;;;31506:39;31478:2;31471:10;31442:113;;;31573:6;31570:1;31567:13;31564:2;;;-1:-1:-1;;31608:1:33;31590:16;;31583:27;31413:205::o;31623:156::-;31711:42;31704:5;31700:54;31693:5;31690:65;31680:2;;31769:1;31766;31759:12;31680:2;31670:109;:::o;31784:120::-;31872:5;31865:13;31858:21;31851:5;31848:32;31838:2;;31894:1;31891;31884:12"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "deposit(address,address,uint256)": "8340f549",
              "getIdAddress(uint256)": "7358e9a5",
              "getNTokens()": "9040a949",
              "getNonce(address)": "2d0335ab",
              "getTokenID(address)": "63f8071c",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isValidSignature(address,bytes32,bytes,bytes)": "fa4e12d7",
              "metaSafeBatchTransferFrom(address,address,uint256[],uint256[],bool,bytes)": "a3d4926e",
              "metaSafeTransferFrom(address,address,uint256,uint256,bool,bytes)": "ce0b514b",
              "metaSetApprovalForAll(address,address,bool,bool,bytes)": "f5d4c820",
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "withdraw(address,address,uint256)": "d9caed12"
            }
          }
        }
      },
      "multi-token-standard/contracts/interfaces/IERC1155.sol": {
        "IERC1155": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465"
            }
          }
        }
      },
      "multi-token-standard/contracts/interfaces/IERC1155Metadata.sol": {
        "IERC1155Metadata": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_uri",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol": {
        "IERC1155TokenReceiver": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155BatchReceived",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "onERC1155Received",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
              "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61"
            }
          }
        }
      },
      "multi-token-standard/contracts/interfaces/IERC1271Wallet.sol": {
        "IERC1271Wallet": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "_hash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "_signature",
                  "type": "bytes"
                }
              ],
              "name": "isValidSignature",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "magicValue",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "_signature",
                  "type": "bytes"
                }
              ],
              "name": "isValidSignature",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "magicValue",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "isValidSignature(bytes,bytes)": "20c13b0b",
              "isValidSignature(bytes32,bytes)": "1626ba7e"
            }
          }
        }
      },
      "multi-token-standard/contracts/interfaces/IERC165.sol": {
        "IERC165": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceId",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "multi-token-standard/contracts/interfaces/IERC20.sol": {
        "IERC20": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Approval",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "Transfer",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                }
              ],
              "name": "allowance",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "spender",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "approve",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "who",
                  "type": "address"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "totalSupply",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transfer",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "allowance(address,address)": "dd62ed3e",
              "approve(address,uint256)": "095ea7b3",
              "balanceOf(address)": "70a08231",
              "totalSupply()": "18160ddd",
              "transfer(address,uint256)": "a9059cbb",
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          }
        }
      },
      "multi-token-standard/contracts/mocks/ERC1155MintBurnMock.sol": {
        "ERC1155MintBurnMock": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_uri",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "batchMintMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "burnMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "mintMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50612319806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c8063a22cb46511610081578063d7a0ad901161005b578063d7a0ad90146101f8578063e985e9c51461020b578063f242432a1461021e576100d3565b8063a22cb465146101bf578063a3f091f5146101d2578063bd7a6c41146101e5576100d3565b80632eb2c2d6116100b25780632eb2c2d614610177578063437ecbe91461018c5780634e1273f41461019f576100d3565b8062fdd58e1461010e57806301ffc9a7146101375780630e89341c14610157575b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101059061204d565b60405180910390fd5b61012161011c366004611dc6565b610231565b60405161012e91906120aa565b60405180910390f35b61014a610145366004611f35565b610264565b60405161012e9190611fd1565b61016a610165366004611f75565b610277565b60405161012e9190611fdc565b61018a610185366004611b7d565b6103ca565b005b61018a61019a366004611def565b6104d5565b6101b26101ad366004611e74565b6104e5565b60405161012e9190611f8d565b61018a6101cd366004611d8c565b610631565b61018a6101e0366004611e21565b6106ca565b61018a6101f3366004611c86565b6106dc565b61018a610206366004611cf7565b6106e7565b61014a610219366004611b4b565b6106f3565b61018a61022c366004611c23565b61072e565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b600061026f82610832565b90505b919050565b606060026102848361088f565b60405160200180838054600181600116156101000203166002900480156102e25780601f106102c05761010080835404028352918201916102e2565b820191906000526020600020905b8154815290600101906020018083116102ce575b5050825160208401908083835b6020831061032c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016102ef565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790527f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe50181526005909201905295945050505050565b3373ffffffffffffffffffffffffffffffffffffffff861614806103f357506103f385336106f3565b610448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061220c602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806121806030913960400191505060405180910390fd5b6104c0858585856109bb565b6104ce858585855a86610d0f565b5050505050565b6104e0838383610f86565b505050565b60608151835114610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806121e0602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561055b57600080fd5b50604051908082528060200260200182016040528015610585578160200160208202803683370190505b50905060005b8451811015610629576000808683815181106105a357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106105f357fe5b602002602001015181526020019081526020016000205482828151811061061657fe5b602090810291909101015260010161058b565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d684848484611031565b50505050565b6104e08383836110e6565b6106d684848484611326565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff86161480610757575061075785336106f3565b6107ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612121602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806120f6602b913960400191505060405180910390fd5b61082485858585611570565b6104ce858585855a86611673565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000141561088657506001610272565b61026f82611864565b6060816108d0575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610272565b818060005b82156108e957600101600a830492506108d5565b60608167ffffffffffffffff8111801561090257600080fd5b506040519080825280601f01601f19166020018201604052801561092d576020820181803683370190505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b83156109b157600a840660300160f81b8282806001900393508151811061097757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350610954565b5095945050505050565b8051825114610a15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061214b6035913960400191505060405180910390fd5b815160005b81811015610c0757610aaa838281518110610a3157fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610a8557fe5b60200260200101518152602001908152602001600020546118c190919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610af657fe5b6020026020010151815260200190815260200160002081905550610b98838281518110610b1f57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610b7357fe5b602002602001015181526020019081526020016000205461193890919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610be457fe5b602090810291909101810151825281019190915260400160002055600101610a1a565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610cb4578181015183820152602001610c9c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610cf3578181015183820152602001610cdb565b5050505090500194505050505060405180910390a45050505050565b610d2e8573ffffffffffffffffffffffffffffffffffffffff166119b3565b15610f7e5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610de6578181015183820152602001610dce565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610e25578181015183820152602001610e0d565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015610e61578181015183820152602001610e49565b50505050905090810190601f168015610e8e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015610eb357600080fd5b5087f1158015610ec7573d6000803e3d6000fd5b50505050506040513d6020811015610ede57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f81526020018061226b603f913960400191505060405180910390fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152902054610fbf90826118c1565b73ffffffffffffffffffffffffffffffffffffffff841660008181526020818152604080832087845282528083209490945583518681529081018590528351919333927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4505050565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020818152604080832086845290915290205461106a9083611938565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46106d660008585855a86611673565b815181518114611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806121b06030913960400191505060405180910390fd5b60005b8181101561121e576111af83828151811061115b57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610a8557fe5b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106111fb57fe5b602090810291909101810151825281019190915260400160002055600101611144565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156112cc5781810151838201526020016112b4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561130b5781810151838201526020016112f3565b5050505090500194505050505060405180910390a450505050565b8151835114611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061223b6030913960400191505060405180910390fd5b825160005b8181101561145f576113f084828151811061139c57fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888581518110610b7357fe5b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087848151811061143c57fe5b602090810291909101810151825281019190915260400160002055600101611385565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561150d5781810151838201526020016114f5565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561154c578181015183820152602001611534565b5050505090500194505050505060405180910390a46104ce60008686865a87610d0f565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546115a990826118c1565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546115f99082611938565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6116928573ffffffffffffffffffffffffffffffffffffffff166119b3565b15610f7e5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561174b578181015183820152602001611733565b50505050905090810190601f1680156117785780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561179b57600080fd5b5087f11580156117af573d6000803e3d6000fd5b50505050506040513d60208110156117c657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806122aa603a913960400191505060405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156118b857506001610272565b61026f826119ea565b60008282111561193257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000828201838110156119ac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f80158015906119ac57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461027257600080fd5b600082601f830112611a68578081fd5b8135611a7b611a76826120d7565b6120b3565b818152915060208083019084810181840286018201871015611a9c57600080fd5b60005b84811015611abb57813584529282019290820190600101611a9f565b505050505092915050565b600082601f830112611ad6578081fd5b813567ffffffffffffffff811115611aea57fe5b611b1b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016120b3565b9150808252836020828501011115611b3257600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611b5d578182fd5b611b6683611a34565b9150611b7460208401611a34565b90509250929050565b600080600080600060a08688031215611b94578081fd5b611b9d86611a34565b9450611bab60208701611a34565b9350604086013567ffffffffffffffff80821115611bc7578283fd5b611bd389838a01611a58565b94506060880135915080821115611be8578283fd5b611bf489838a01611a58565b93506080880135915080821115611c09578283fd5b50611c1688828901611ac6565b9150509295509295909350565b600080600080600060a08688031215611c3a578081fd5b611c4386611a34565b9450611c5160208701611a34565b93506040860135925060608601359150608086013567ffffffffffffffff811115611c7a578182fd5b611c1688828901611ac6565b600080600060608486031215611c9a578283fd5b611ca384611a34565b9250602084013567ffffffffffffffff80821115611cbf578384fd5b611ccb87838801611a58565b93506040860135915080821115611ce0578283fd5b50611ced86828701611a58565b9150509250925092565b60008060008060808587031215611d0c578384fd5b611d1585611a34565b9350602085013567ffffffffffffffff80821115611d31578485fd5b611d3d88838901611a58565b94506040870135915080821115611d52578384fd5b611d5e88838901611a58565b93506060870135915080821115611d73578283fd5b50611d8087828801611ac6565b91505092959194509250565b60008060408385031215611d9e578182fd5b611da783611a34565b915060208301358015158114611dbb578182fd5b809150509250929050565b60008060408385031215611dd8578182fd5b611de183611a34565b946020939093013593505050565b600080600060608486031215611e03578283fd5b611e0c84611a34565b95602085013595506040909401359392505050565b60008060008060808587031215611e36578384fd5b611e3f85611a34565b93506020850135925060408501359150606085013567ffffffffffffffff811115611e68578182fd5b611d8087828801611ac6565b60008060408385031215611e86578081fd5b823567ffffffffffffffff80821115611e9d578283fd5b818501915085601f830112611eb0578283fd5b8135611ebe611a76826120d7565b80828252602080830192508086018a828387028901011115611ede578788fd5b8796505b84871015611f0757611ef381611a34565b845260019690960195928101928101611ee2565b509096508701359350505080821115611f1e578283fd5b50611f2b85828601611a58565b9150509250929050565b600060208284031215611f46578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119ac578182fd5b600060208284031215611f86578081fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015611fc557835183529284019291840191600101611fa9565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b8181101561200857858101830151858201604001528201611fec565b818111156120195783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526027908201527f455243313135354d6574614d696e744275726e4d6f636b3a20494e56414c494460408201527f5f4d4554484f4400000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff811182821017156120cf57fe5b604052919050565b600067ffffffffffffffff8211156120eb57fe5b506020908102019056fe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135354d696e744275726e2362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a2646970667358221220eac34c81993c809245135f28e599d6837c4733ad5e560f1263987fe0359dd62264736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2319 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD7A0AD90 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD7A0AD90 EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x21E JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xA3F091F5 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xBD7A6C41 EQ PUSH2 0x1E5 JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x437ECBE9 EQ PUSH2 0x18C JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x19F JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x157 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x105 SWAP1 PUSH2 0x204D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x121 PUSH2 0x11C CALLDATASIZE PUSH1 0x4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH2 0x231 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x20AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14A PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F35 JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1FD1 JUMP JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F75 JUMP JUMPDEST PUSH2 0x277 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1FDC JUMP JUMPDEST PUSH2 0x18A PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B7D JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x18A PUSH2 0x19A CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEF JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1B2 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x1E74 JUMP JUMPDEST PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1F8D JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x1D8C JUMP JUMPDEST PUSH2 0x631 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C86 JUMP JUMPDEST PUSH2 0x6DC JUMP JUMPDEST PUSH2 0x18A PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CF7 JUMP JUMPDEST PUSH2 0x6E7 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B4B JUMP JUMPDEST PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0x1C23 JUMP JUMPDEST PUSH2 0x72E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26F DUP3 PUSH2 0x832 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH2 0x284 DUP4 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2E2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2C0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2E2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2CE JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2EF JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x2E6A736F6E000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 ADD DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP3 ADD SWAP1 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x3F3 JUMPI POP PUSH2 0x3F3 DUP6 CALLER PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x448 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x220C PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x4B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2180 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4C0 DUP6 DUP6 DUP6 DUP6 PUSH2 0x9BB JUMP JUMPDEST PUSH2 0x4CE DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xD0F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4E0 DUP4 DUP4 DUP4 PUSH2 0xF86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x541 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x21E0 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x585 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x629 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5A3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x616 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x58B JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1031 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x4E0 DUP4 DUP4 DUP4 PUSH2 0x10E6 JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1326 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x757 JUMPI POP PUSH2 0x757 DUP6 CALLER PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x7AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2121 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x818 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x20F6 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x824 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1570 JUMP JUMPDEST PUSH2 0x4CE DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1673 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x886 JUMPI POP PUSH1 0x1 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x1864 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x8D0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x272 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x0 JUMPDEST DUP3 ISZERO PUSH2 0x8E9 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP4 DIV SWAP3 POP PUSH2 0x8D5 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x9B1 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x977 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x954 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0xA15 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x214B PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xC07 JUMPI PUSH2 0xAAA DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA31 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x18C1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xAF6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xB98 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB1F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB73 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1938 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xBE4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xA1A JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCB4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC9C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCF3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCDB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD2E DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19B3 JUMP JUMPDEST ISZERO PUSH2 0xF7E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDE6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDCE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE25 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE0D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE61 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE49 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE8E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0xEC7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xF7C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x226B PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xFBF SWAP1 DUP3 PUSH2 0x18C1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD SWAP2 SWAP4 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x106A SWAP1 DUP4 PUSH2 0x1938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP8 DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x6D6 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1673 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1141 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x21B0 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x121E JUMPI PUSH2 0x11AF DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x115B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x11FB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1144 JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12CC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12B4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x130B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12F3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x1380 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x223B PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x145F JUMPI PUSH2 0x13F0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x139C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB73 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x143C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1385 JUMP JUMPDEST POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x150D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14F5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x154C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1534 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x4CE PUSH1 0x0 DUP7 DUP7 DUP7 GAS DUP8 PUSH2 0xD0F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x15A9 SWAP1 DUP3 PUSH2 0x18C1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x15F9 SWAP1 DUP3 PUSH2 0x1938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1692 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19B3 JUMP JUMPDEST ISZERO PUSH2 0xF7E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x174B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1733 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1778 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x179B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x17AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xF7C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x22AA PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x18B8 JUMPI POP PUSH1 0x1 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x19EA JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1932 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x19AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x19AC JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A68 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1A7B PUSH2 0x1A76 DUP3 PUSH2 0x20D7 JUMP JUMPDEST PUSH2 0x20B3 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1A9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1ABB JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1A9F JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1AD6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AEA JUMPI INVALID JUMPDEST PUSH2 0x1B1B PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x20B3 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1B32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B5D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1B66 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP2 POP PUSH2 0x1B74 PUSH1 0x20 DUP5 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1B94 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1B9D DUP7 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 POP PUSH2 0x1BAB PUSH1 0x20 DUP8 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1BC7 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1BD3 DUP10 DUP4 DUP11 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1BE8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1BF4 DUP10 DUP4 DUP11 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1C09 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1C16 DUP9 DUP3 DUP10 ADD PUSH2 0x1AC6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1C3A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C43 DUP7 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 POP PUSH2 0x1C51 PUSH1 0x20 DUP8 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C7A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1C16 DUP9 DUP3 DUP10 ADD PUSH2 0x1AC6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1C9A JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1CA3 DUP5 PUSH2 0x1A34 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1CBF JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1CCB DUP8 DUP4 DUP9 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1CE0 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1CED DUP7 DUP3 DUP8 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1D0C JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1D15 DUP6 PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1D31 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1D3D DUP9 DUP4 DUP10 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D52 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1D5E DUP9 DUP4 DUP10 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D73 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1D80 DUP8 DUP3 DUP9 ADD PUSH2 0x1AC6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D9E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1DA7 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1DBB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1DD8 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1DE1 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E03 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1E0C DUP5 PUSH2 0x1A34 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1E36 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1E3F DUP6 PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E68 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1D80 DUP8 DUP3 DUP9 ADD PUSH2 0x1AC6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E86 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1E9D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EB0 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1EBE PUSH2 0x1A76 DUP3 PUSH2 0x20D7 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x1EDE JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x1F07 JUMPI PUSH2 0x1EF3 DUP2 PUSH2 0x1A34 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x1EE2 JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x1F1E JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1F2B DUP6 DUP3 DUP7 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F46 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x19AC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F86 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1FC5 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1FA9 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2008 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1FEC JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2019 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D6574614D696E744275726E4D6F636B3A20494E56414C4944 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x5F4D4554484F4400000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x20CF JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x20EB JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x68427572 PUSH15 0x3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x684D696E PUSH21 0x3A20494E56414C49445F4152524159535F4C454E47 SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEA 0xC3 0x4C DUP2 SWAP10 EXTCODECOPY DUP1 SWAP3 GASLIMIT SGT 0x5F 0x28 0xE5 SWAP10 0xD6 DUP4 PUSH29 0x4733AD5E560F1263987FE0359DD62264736F6C63430007040033000000 ",
              "sourceMap": "195:2661:19:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:10936:33",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:33",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "65:147:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "75:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "97:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "84:20:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "75:5:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "190:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "199:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "202:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "192:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "192:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "192:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "126:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "137:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "144:42:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "133:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "133:54:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "123:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "123:65:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "116:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "116:73:33"
                              },
                              "nodeType": "YulIf",
                              "src": "113:2:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "44:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "55:5:33",
                            "type": ""
                          }
                        ],
                        "src": "14:198:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "287:622:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "336:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "345:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "352:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "338:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "338:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "338:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "315:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "323:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "311:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "311:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "330:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "307:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "307:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "300:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "300:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "297:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "369:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "396:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "383:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "383:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "373:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "412:78:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "482:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "436:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "436:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "421:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "421:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "412:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "499:16:33",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "510:5:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "503:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "531:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "538:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "524:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "524:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "524:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "554:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "564:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "558:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "577:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "588:5:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "595:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "584:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "584:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "577:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "607:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "622:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "630:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "618:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "618:15:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "611:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "692:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "701:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "704:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "694:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "694:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "694:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "656:6:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "668:6:33"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "676:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "664:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "664:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "652:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "652:28:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "682:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "648:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "648:37:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "687:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "645:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "645:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "642:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "717:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "726:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "721:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "785:118:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "806:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "824:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "811:12:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "811:17:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "799:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "799:30:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "799:30:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "842:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "853:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "858:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "849:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "849:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "842:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "874:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "885:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "890:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "881:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "881:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "874:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "747:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "750:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "744:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "744:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "758:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "760:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "769:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "772:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "765:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "765:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "760:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "740:3:33",
                                "statements": []
                              },
                              "src": "736:167:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "261:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "269:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "277:5:33",
                            "type": ""
                          }
                        ],
                        "src": "217:692:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "968:526:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1017:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1026:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1033:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1019:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1019:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1019:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "996:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1004:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "992:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "992:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1011:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "988:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "988:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "981:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "981:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "978:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1050:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1077:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1064:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1064:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1054:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1127:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "1129:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1129:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1129:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1099:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1107:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1096:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1096:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1093:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1149:126:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1185:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1193:4:33",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1181:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1181:17:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1200:66:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1177:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1177:90:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1269:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1173:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1173:101:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1158:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1158:117:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1149:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1291:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1298:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1284:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1284:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1284:21:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1357:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1366:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1369:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1359:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1359:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1359:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1328:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1336:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1324:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1324:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1345:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1320:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1320:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1352:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1317:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1317:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1314:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "1399:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1406:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1395:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1395:16:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1417:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1425:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1413:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1413:17:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1432:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1382:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1382:57:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1382:57:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "1463:5:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1470:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1459:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1459:18:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1479:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1455:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1455:29:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1486:1:33",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1448:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1448:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1448:40:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "942:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "950:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "958:5:33",
                            "type": ""
                          }
                        ],
                        "src": "914:580:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1586:187:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1632:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1641:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1649:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1634:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1634:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1634:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1607:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1616:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1603:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1603:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1628:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1599:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1599:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1596:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1667:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1698:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1667:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1717:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1752:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1763:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1748:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1748:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1727:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1727:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1717:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1544:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1555:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1567:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1575:6:33",
                            "type": ""
                          }
                        ],
                        "src": "1499:274:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1975:804:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2022:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2031:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2039:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2024:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2024:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2024:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1996:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2005:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1992:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1992:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2017:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1988:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1988:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1985:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2057:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2088:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2067:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2067:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2057:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2107:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2142:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2153:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2138:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2138:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2117:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2117:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2107:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2166:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2197:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2208:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2193:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2193:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2180:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2180:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2170:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2221:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2231:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2225:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2276:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2285:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2293:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2278:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2278:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2278:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2264:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2272:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2261:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2261:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2258:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2311:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2360:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2371:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2356:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2356:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2380:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2321:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2321:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2311:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2397:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2430:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2441:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2426:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2426:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2413:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2413:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2401:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2474:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2483:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2491:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2476:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2476:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2476:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2460:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2470:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2457:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2457:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2454:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2509:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2558:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2569:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2554:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2554:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2580:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2519:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2519:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2509:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2597:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2630:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2641:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2626:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2626:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2613:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2613:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2601:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2675:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2684:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2692:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2677:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2677:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2677:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2661:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2671:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2658:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2658:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2655:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2710:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2743:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2754:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2739:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2739:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2765:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "2720:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2720:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2710:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1909:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1920:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1932:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1940:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1948:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1956:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1964:6:33",
                            "type": ""
                          }
                        ],
                        "src": "1778:1001:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2931:485:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2978:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2987:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2995:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2980:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2980:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2980:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2952:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2961:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2948:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2948:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2973:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2944:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2944:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2941:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3013:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3044:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3023:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3023:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3013:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3063:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3098:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3109:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3094:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3094:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3073:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3073:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3063:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3122:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3149:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3160:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3145:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3145:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3132:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3132:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3122:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3173:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3200:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3211:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3196:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3196:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3183:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3183:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3173:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3224:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3255:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3266:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3251:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3251:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3238:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3238:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3228:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3314:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3323:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3331:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3316:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3316:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3316:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3286:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3294:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3283:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3280:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3349:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3382:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3393:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3378:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3378:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3402:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3359:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3359:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3349:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2865:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2876:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2888:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2896:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2904:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2912:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2920:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2784:632:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3575:559:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3621:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3630:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3638:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3623:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3623:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3623:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3596:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3605:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3592:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3592:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3617:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3588:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3588:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3585:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3656:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3687:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3666:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3666:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3656:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3706:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3737:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3748:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3733:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3733:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3720:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3720:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3710:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3761:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3771:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3765:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3816:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3825:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3833:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3818:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3818:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3818:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3804:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3812:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3801:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3801:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3798:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3851:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3900:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3911:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3896:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3896:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3920:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "3861:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3861:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3851:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3937:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3970:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3981:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3966:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3966:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3953:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3953:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3941:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4014:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4023:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4031:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4016:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4016:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4016:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4000:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4010:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3997:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3997:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3994:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4049:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4098:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4109:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4094:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4094:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4120:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4059:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4059:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4049:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3525:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3536:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3548:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3556:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3564:6:33",
                            "type": ""
                          }
                        ],
                        "src": "3421:713:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4319:744:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4366:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4375:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4383:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4368:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4368:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4368:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4340:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4349:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4336:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4336:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4361:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4332:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4332:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4329:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4401:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4432:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4411:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4411:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4401:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4451:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4482:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4493:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4478:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4478:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4465:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4465:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4455:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4506:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4516:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4510:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4561:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4570:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4578:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4563:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4563:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4563:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4549:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4557:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4546:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4546:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4543:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4596:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4645:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4656:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4641:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4641:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4665:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4606:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4606:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4596:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4682:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4715:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4726:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4711:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4711:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4698:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4698:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4686:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4759:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4768:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4776:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4761:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4761:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4761:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4745:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4755:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4742:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4742:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4739:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4794:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4843:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4854:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4839:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4839:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4865:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4804:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4804:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4794:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4882:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4915:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4926:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4911:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4911:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4898:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4898:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4886:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4959:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4968:6:33"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4976:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4961:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4961:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4961:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4945:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4955:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4942:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4942:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4939:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4994:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5027:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5038:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5023:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5023:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5049:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5004:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5004:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4994:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4261:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4272:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4284:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4292:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4300:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4308:6:33",
                            "type": ""
                          }
                        ],
                        "src": "4139:924:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5152:285:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5198:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5207:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5215:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5200:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5200:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5173:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5182:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5169:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5169:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5194:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5165:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5165:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5162:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5233:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5264:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5243:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5243:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5233:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5283:45:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5313:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5324:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5309:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5309:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5296:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5296:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5287:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5381:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5390:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5398:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5383:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5383:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5383:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5350:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "5371:5:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "5364:6:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5364:13:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "5357:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5357:21:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5347:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5347:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5340:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5340:40:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5337:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5416:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5426:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5416:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5110:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5121:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5133:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5141:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5068:369:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5529:179:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5575:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5584:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5592:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5577:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5577:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5577:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5550:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5559:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5546:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5546:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5571:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5542:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5542:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5539:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5610:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5641:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5620:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5620:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5610:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5660:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5687:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5698:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5683:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5683:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5670:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5670:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5660:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5487:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5498:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5510:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5518:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5442:266:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5817:230:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5863:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5872:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5880:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5865:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5865:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5865:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5838:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5847:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5834:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5834:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5859:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5830:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5830:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5827:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5898:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5929:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5908:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5908:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5898:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5948:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5975:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5986:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5971:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5971:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5958:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5958:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5948:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5999:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6026:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6037:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6022:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6022:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6009:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6009:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5999:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5767:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5778:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5790:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5798:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5806:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5713:334:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6182:425:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6229:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6238:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6246:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6231:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6231:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6231:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6203:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6212:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6199:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6199:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6224:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6195:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6195:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6192:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6264:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6295:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6274:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6274:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6264:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6314:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6341:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6352:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6337:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6337:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6324:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6324:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6314:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6365:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6392:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6403:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6388:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6388:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6375:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6375:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6365:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6416:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6447:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6458:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6443:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6443:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6430:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6430:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6420:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6505:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6514:6:33"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6522:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6507:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6507:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6507:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6477:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6485:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6474:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6474:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6471:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6540:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6573:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6584:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6569:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6569:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6593:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6550:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6550:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6540:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6124:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6135:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6147:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6155:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6163:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6171:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6052:555:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6749:1109:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6795:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6804:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6812:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6797:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6797:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6797:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6770:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6779:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6766:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6766:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6791:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6762:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6762:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6759:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6830:37:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6857:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6844:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6844:23:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6834:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6876:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6886:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6880:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6931:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6940:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6948:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6933:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6933:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6933:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6919:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6927:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6916:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6916:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6913:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6966:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6980:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6991:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6976:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6976:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6970:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7046:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7055:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7063:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7048:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7048:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7048:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7025:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7029:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7021:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7021:13:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7036:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7017:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7017:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7010:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7010:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7007:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7081:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7108:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7095:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7095:16:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7085:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7120:80:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7192:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "7146:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7146:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "7131:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7131:69:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "7124:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7209:16:33",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "7222:3:33"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7213:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "7241:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7246:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7234:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7234:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7234:19:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7262:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7272:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "7266:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7285:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "7296:3:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7301:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7292:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7292:12:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "7285:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7313:22:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7328:2:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7332:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7324:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7324:11:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "7317:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7394:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7403:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7411:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7396:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7396:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7396:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7358:2:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7366:6:33"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "7374:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "7362:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7362:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7354:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7354:24:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "7380:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7350:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7350:33:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7385:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7347:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7347:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7344:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7429:15:33",
                              "value": {
                                "name": "value1",
                                "nodeType": "YulIdentifier",
                                "src": "7438:6:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7433:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7502:126:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7523:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "7549:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "7528:20:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7528:25:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7516:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7516:38:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7516:38:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7567:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7578:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "7583:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7574:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7574:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "7567:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7599:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "7610:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "7615:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7606:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7606:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "7599:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7464:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7467:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7461:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7461:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7475:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7477:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7486:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7489:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7482:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7482:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7477:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7457:3:33",
                                "statements": []
                              },
                              "src": "7453:175:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7637:15:33",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "7647:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7637:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7661:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7694:9:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "7705:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7690:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7690:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7677:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7677:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7665:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7738:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7747:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7755:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7740:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7740:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7740:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7724:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7734:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7721:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7721:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7718:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7773:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7822:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7833:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7818:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7818:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7844:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "7783:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7783:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7773:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6707:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6718:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6730:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6738:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6612:1246:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7932:283:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7978:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7987:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7995:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7980:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7980:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7980:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7953:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7962:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7949:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7949:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7974:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7945:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7945:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7942:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8013:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8039:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8026:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8026:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8017:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8159:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8168:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8176:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8161:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8161:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8161:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "8071:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "8082:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8089:66:33",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8078:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8078:78:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "8068:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8068:89:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8061:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8061:97:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8058:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8194:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8204:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8194:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7898:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7909:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7921:6:33",
                            "type": ""
                          }
                        ],
                        "src": "7863:352:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8290:120:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8336:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8345:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8353:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8338:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8338:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8338:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8311:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8320:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8307:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8307:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8332:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8303:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8303:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8300:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8371:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8394:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8381:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8381:23:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8371:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8256:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8267:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8279:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8220:190:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8566:484:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8576:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8586:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8580:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8597:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8615:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8626:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8611:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8611:18:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8601:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8645:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8656:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8638:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8638:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8638:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8668:17:33",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "8679:6:33"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "8672:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8694:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8714:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8708:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8708:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "8698:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8737:6:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8745:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8730:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8730:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8730:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8761:25:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8772:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8783:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8768:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8768:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "8761:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8795:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8813:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8821:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8809:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8809:15:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "8799:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8833:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "8842:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "8837:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8904:120:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "8925:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "8936:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "8930:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "8930:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "8918:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8918:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8918:26:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8957:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "8968:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "8973:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8964:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8964:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "8957:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8989:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "9003:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9011:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8999:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8999:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "8989:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "8866:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "8869:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8863:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8863:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "8877:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "8879:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "8888:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8891:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "8884:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8884:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "8879:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "8859:3:33",
                                "statements": []
                              },
                              "src": "8855:169:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9033:11:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "9041:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9033:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8535:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8546:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8557:4:33",
                            "type": ""
                          }
                        ],
                        "src": "8415:635:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9150:92:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9160:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9172:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9183:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9168:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9168:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9160:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9202:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "9227:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "9220:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9220:14:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "9213:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9213:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9195:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9195:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9195:41:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9119:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9130:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9141:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9055:187:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9368:541:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9378:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9388:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9382:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9406:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9417:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9399:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9399:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9399:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9429:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9449:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9443:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9443:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "9433:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9476:9:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9487:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9472:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9472:18:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9492:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9465:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9465:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9465:34:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9508:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "9517:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "9512:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9580:90:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9609:9:33"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9620:1:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9605:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9605:17:33"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9624:2:33",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9601:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9601:26:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "9643:6:33"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "9651:1:33"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9639:3:33"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "9639:14:33"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9655:2:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9635:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9635:23:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9629:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9629:30:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9594:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9594:66:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9594:66:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9541:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9544:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9538:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9538:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9552:19:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9554:15:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "9563:1:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9566:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9559:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9559:10:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "9554:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9534:3:33",
                                "statements": []
                              },
                              "src": "9530:140:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9704:69:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9733:9:33"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9744:6:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9729:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9729:22:33"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9753:2:33",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9725:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9725:31:33"
                                        },
                                        {
                                          "name": "tail",
                                          "nodeType": "YulIdentifier",
                                          "src": "9758:4:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9718:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9718:45:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9718:45:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9685:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9688:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9682:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9682:13:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9679:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9782:121:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9798:9:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "9817:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "9825:2:33",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "9813:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9813:15:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9830:66:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "9809:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9809:88:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9794:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9794:104:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9900:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9790:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9790:113:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9782:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9337:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9348:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9359:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9247:662:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10088:229:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10105:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10116:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10098:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10098:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10098:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10139:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10150:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10135:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10135:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10155:2:33",
                                    "type": "",
                                    "value": "39"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10128:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10128:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10128:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10178:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10189:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10174:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10174:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10194:34:33",
                                    "type": "",
                                    "value": "ERC1155MetaMintBurnMock: INVALID"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10167:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10167:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10167:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10249:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10260:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10245:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10245:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10265:9:33",
                                    "type": "",
                                    "value": "_METHOD"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10238:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10238:37:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10238:37:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10284:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10296:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10307:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10292:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10292:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10284:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a14409389543c5be2d3a34f066f3d8b4d59db7d4a318cfe221527e5c604f065c__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10065:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10079:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9914:403:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10423:76:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10433:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10445:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10456:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10441:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10441:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10433:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10475:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10486:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10468:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10468:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10468:25:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10392:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10403:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10414:4:33",
                            "type": ""
                          }
                        ],
                        "src": "10322:177:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10548:198:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10558:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10574:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10568:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10568:9:33"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "10558:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10586:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10608:6:33"
                                  },
                                  {
                                    "name": "size",
                                    "nodeType": "YulIdentifier",
                                    "src": "10616:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10604:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10604:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10590:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10696:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "10698:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10698:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10698:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10639:10:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10651:18:33",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10636:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10636:34:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10675:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10687:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10672:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10672:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "10633:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10633:62:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10630:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10725:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10729:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10718:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10718:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10718:22:33"
                            }
                          ]
                        },
                        "name": "allocateMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "10528:4:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "10537:6:33",
                            "type": ""
                          }
                        ],
                        "src": "10504:242:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10826:108:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10870:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "10872:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10872:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10872:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10842:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10850:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10839:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10839:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10836:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10892:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "10908:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10916:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "10904:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10904:17:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10923:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10900:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10900:28:33"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "10892:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_t_array$_t_address_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10806:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "10817:4:33",
                            "type": ""
                          }
                        ],
                        "src": "10751:183:33"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_t_array$_t_uint256_$dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst := array\n        mstore(array, length)\n        let _1 := 0x20\n        dst := add(array, _1)\n        let src := add(offset, _1)\n        if gt(add(add(offset, mul(length, _1)), _1), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n    }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        array := allocateMemory(add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20))\n        mstore(array, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array, length), 0x20), 0)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value1, value1) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value1, value1) }\n        let length := calldataload(_2)\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _3 := 0x20\n        dst := add(dst, _3)\n        let src := add(_2, _3)\n        if gt(add(add(_2, mul(length, _3)), _3), dataEnd) { revert(value1, value1) }\n        let i := value1\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_t_address(src))\n            dst := add(dst, _3)\n            src := add(src, _3)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _3))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := tail\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), tail)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_encode_tuple_t_stringliteral_a14409389543c5be2d3a34f066f3d8b4d59db7d4a318cfe221527e5c604f065c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"ERC1155MetaMintBurnMock: INVALID\")\n        mstore(add(headStart, 96), \"_METHOD\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_array$_t_address_$dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(mul(length, 0x20), 0x20)\n    }\n}",
                  "id": 33,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100d35760003560e01c8063a22cb46511610081578063d7a0ad901161005b578063d7a0ad90146101f8578063e985e9c51461020b578063f242432a1461021e576100d3565b8063a22cb465146101bf578063a3f091f5146101d2578063bd7a6c41146101e5576100d3565b80632eb2c2d6116100b25780632eb2c2d614610177578063437ecbe91461018c5780634e1273f41461019f576100d3565b8062fdd58e1461010e57806301ffc9a7146101375780630e89341c14610157575b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101059061204d565b60405180910390fd5b61012161011c366004611dc6565b610231565b60405161012e91906120aa565b60405180910390f35b61014a610145366004611f35565b610264565b60405161012e9190611fd1565b61016a610165366004611f75565b610277565b60405161012e9190611fdc565b61018a610185366004611b7d565b6103ca565b005b61018a61019a366004611def565b6104d5565b6101b26101ad366004611e74565b6104e5565b60405161012e9190611f8d565b61018a6101cd366004611d8c565b610631565b61018a6101e0366004611e21565b6106ca565b61018a6101f3366004611c86565b6106dc565b61018a610206366004611cf7565b6106e7565b61014a610219366004611b4b565b6106f3565b61018a61022c366004611c23565b61072e565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b600061026f82610832565b90505b919050565b606060026102848361088f565b60405160200180838054600181600116156101000203166002900480156102e25780601f106102c05761010080835404028352918201916102e2565b820191906000526020600020905b8154815290600101906020018083116102ce575b5050825160208401908083835b6020831061032c57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016102ef565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790527f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe50181526005909201905295945050505050565b3373ffffffffffffffffffffffffffffffffffffffff861614806103f357506103f385336106f3565b610448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061220c602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806121806030913960400191505060405180910390fd5b6104c0858585856109bb565b6104ce858585855a86610d0f565b5050505050565b6104e0838383610f86565b505050565b60608151835114610541576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806121e0602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561055b57600080fd5b50604051908082528060200260200182016040528015610585578160200160208202803683370190505b50905060005b8451811015610629576000808683815181106105a357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106105f357fe5b602002602001015181526020019081526020016000205482828151811061061657fe5b602090810291909101015260010161058b565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d684848484611031565b50505050565b6104e08383836110e6565b6106d684848484611326565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff86161480610757575061075785336106f3565b6107ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180612121602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806120f6602b913960400191505060405180910390fd5b61082485858585611570565b6104ce858585855a86611673565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000141561088657506001610272565b61026f82611864565b6060816108d0575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610272565b818060005b82156108e957600101600a830492506108d5565b60608167ffffffffffffffff8111801561090257600080fd5b506040519080825280601f01601f19166020018201604052801561092d576020820181803683370190505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b83156109b157600a840660300160f81b8282806001900393508151811061097757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350610954565b5095945050505050565b8051825114610a15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061214b6035913960400191505060405180910390fd5b815160005b81811015610c0757610aaa838281518110610a3157fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610a8557fe5b60200260200101518152602001908152602001600020546118c190919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610af657fe5b6020026020010151815260200190815260200160002081905550610b98838281518110610b1f57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610b7357fe5b602002602001015181526020019081526020016000205461193890919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610be457fe5b602090810291909101810151825281019190915260400160002055600101610a1a565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610cb4578181015183820152602001610c9c565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610cf3578181015183820152602001610cdb565b5050505090500194505050505060405180910390a45050505050565b610d2e8573ffffffffffffffffffffffffffffffffffffffff166119b3565b15610f7e5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610de6578181015183820152602001610dce565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610e25578181015183820152602001610e0d565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015610e61578181015183820152602001610e49565b50505050905090810190601f168015610e8e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015610eb357600080fd5b5087f1158015610ec7573d6000803e3d6000fd5b50505050506040513d6020811015610ede57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f81526020018061226b603f913960400191505060405180910390fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208181526040808320858452909152902054610fbf90826118c1565b73ffffffffffffffffffffffffffffffffffffffff841660008181526020818152604080832087845282528083209490945583518681529081018590528351919333927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629281900390910190a4505050565b73ffffffffffffffffffffffffffffffffffffffff841660009081526020818152604080832086845290915290205461106a9083611938565b73ffffffffffffffffffffffffffffffffffffffff8516600081815260208181526040808320888452825280832094909455835187815290810186905283519293919233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62928290030190a46106d660008585855a86611673565b815181518114611141576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806121b06030913960400191505060405180910390fd5b60005b8181101561121e576111af83828151811061115b57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610a8557fe5b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106111fb57fe5b602090810291909101810151825281019190915260400160002055600101611144565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156112cc5781810151838201526020016112b4565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561130b5781810151838201526020016112f3565b5050505090500194505050505060405180910390a450505050565b8151835114611380576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061223b6030913960400191505060405180910390fd5b825160005b8181101561145f576113f084828151811061139c57fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000888581518110610b7357fe5b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087848151811061143c57fe5b602090810291909101810151825281019190915260400160002055600101611385565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561150d5781810151838201526020016114f5565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561154c578181015183820152602001611534565b5050505090500194505050505060405180910390a46104ce60008686865a87610d0f565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546115a990826118c1565b73ffffffffffffffffffffffffffffffffffffffff808616600090815260208181526040808320878452825280832094909455918616815280825282812085825290915220546115f99082611938565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6116928573ffffffffffffffffffffffffffffffffffffffff166119b3565b15610f7e5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561174b578181015183820152602001611733565b50505050905090810190601f1680156117785780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561179b57600080fd5b5087f11580156117af573d6000803e3d6000fd5b50505050506040513d60208110156117c657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610f7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806122aa603a913960400191505060405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156118b857506001610272565b61026f826119ea565b60008282111561193257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000828201838110156119ac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f80158015906119ac57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461027257600080fd5b600082601f830112611a68578081fd5b8135611a7b611a76826120d7565b6120b3565b818152915060208083019084810181840286018201871015611a9c57600080fd5b60005b84811015611abb57813584529282019290820190600101611a9f565b505050505092915050565b600082601f830112611ad6578081fd5b813567ffffffffffffffff811115611aea57fe5b611b1b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016120b3565b9150808252836020828501011115611b3257600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611b5d578182fd5b611b6683611a34565b9150611b7460208401611a34565b90509250929050565b600080600080600060a08688031215611b94578081fd5b611b9d86611a34565b9450611bab60208701611a34565b9350604086013567ffffffffffffffff80821115611bc7578283fd5b611bd389838a01611a58565b94506060880135915080821115611be8578283fd5b611bf489838a01611a58565b93506080880135915080821115611c09578283fd5b50611c1688828901611ac6565b9150509295509295909350565b600080600080600060a08688031215611c3a578081fd5b611c4386611a34565b9450611c5160208701611a34565b93506040860135925060608601359150608086013567ffffffffffffffff811115611c7a578182fd5b611c1688828901611ac6565b600080600060608486031215611c9a578283fd5b611ca384611a34565b9250602084013567ffffffffffffffff80821115611cbf578384fd5b611ccb87838801611a58565b93506040860135915080821115611ce0578283fd5b50611ced86828701611a58565b9150509250925092565b60008060008060808587031215611d0c578384fd5b611d1585611a34565b9350602085013567ffffffffffffffff80821115611d31578485fd5b611d3d88838901611a58565b94506040870135915080821115611d52578384fd5b611d5e88838901611a58565b93506060870135915080821115611d73578283fd5b50611d8087828801611ac6565b91505092959194509250565b60008060408385031215611d9e578182fd5b611da783611a34565b915060208301358015158114611dbb578182fd5b809150509250929050565b60008060408385031215611dd8578182fd5b611de183611a34565b946020939093013593505050565b600080600060608486031215611e03578283fd5b611e0c84611a34565b95602085013595506040909401359392505050565b60008060008060808587031215611e36578384fd5b611e3f85611a34565b93506020850135925060408501359150606085013567ffffffffffffffff811115611e68578182fd5b611d8087828801611ac6565b60008060408385031215611e86578081fd5b823567ffffffffffffffff80821115611e9d578283fd5b818501915085601f830112611eb0578283fd5b8135611ebe611a76826120d7565b80828252602080830192508086018a828387028901011115611ede578788fd5b8796505b84871015611f0757611ef381611a34565b845260019690960195928101928101611ee2565b509096508701359350505080821115611f1e578283fd5b50611f2b85828601611a58565b9150509250929050565b600060208284031215611f46578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146119ac578182fd5b600060208284031215611f86578081fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015611fc557835183529284019291840191600101611fa9565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b8181101561200857858101830151858201604001528201611fec565b818111156120195783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526027908201527f455243313135354d6574614d696e744275726e4d6f636b3a20494e56414c494460408201527f5f4d4554484f4400000000000000000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff811182821017156120cf57fe5b604052919050565b600067ffffffffffffffff8211156120eb57fe5b506020908102019056fe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135354d696e744275726e2362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e47544845524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a2646970667358221220eac34c81993c809245135f28e599d6837c4733ad5e560f1263987fe0359dd62264736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xD7A0AD90 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xD7A0AD90 EQ PUSH2 0x1F8 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x21E JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1BF JUMPI DUP1 PUSH4 0xA3F091F5 EQ PUSH2 0x1D2 JUMPI DUP1 PUSH4 0xBD7A6C41 EQ PUSH2 0x1E5 JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x177 JUMPI DUP1 PUSH4 0x437ECBE9 EQ PUSH2 0x18C JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x19F JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x10E JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x157 JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x105 SWAP1 PUSH2 0x204D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x121 PUSH2 0x11C CALLDATASIZE PUSH1 0x4 PUSH2 0x1DC6 JUMP JUMPDEST PUSH2 0x231 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x20AA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x14A PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F35 JUMP JUMPDEST PUSH2 0x264 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1FD1 JUMP JUMPDEST PUSH2 0x16A PUSH2 0x165 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F75 JUMP JUMPDEST PUSH2 0x277 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1FDC JUMP JUMPDEST PUSH2 0x18A PUSH2 0x185 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B7D JUMP JUMPDEST PUSH2 0x3CA JUMP JUMPDEST STOP JUMPDEST PUSH2 0x18A PUSH2 0x19A CALLDATASIZE PUSH1 0x4 PUSH2 0x1DEF JUMP JUMPDEST PUSH2 0x4D5 JUMP JUMPDEST PUSH2 0x1B2 PUSH2 0x1AD CALLDATASIZE PUSH1 0x4 PUSH2 0x1E74 JUMP JUMPDEST PUSH2 0x4E5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x12E SWAP2 SWAP1 PUSH2 0x1F8D JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1CD CALLDATASIZE PUSH1 0x4 PUSH2 0x1D8C JUMP JUMPDEST PUSH2 0x631 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E21 JUMP JUMPDEST PUSH2 0x6CA JUMP JUMPDEST PUSH2 0x18A PUSH2 0x1F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C86 JUMP JUMPDEST PUSH2 0x6DC JUMP JUMPDEST PUSH2 0x18A PUSH2 0x206 CALLDATASIZE PUSH1 0x4 PUSH2 0x1CF7 JUMP JUMPDEST PUSH2 0x6E7 JUMP JUMPDEST PUSH2 0x14A PUSH2 0x219 CALLDATASIZE PUSH1 0x4 PUSH2 0x1B4B JUMP JUMPDEST PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x18A PUSH2 0x22C CALLDATASIZE PUSH1 0x4 PUSH2 0x1C23 JUMP JUMPDEST PUSH2 0x72E JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x26F DUP3 PUSH2 0x832 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH2 0x284 DUP4 PUSH2 0x88F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x2E2 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2C0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x2E2 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2CE JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x32C JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x2EF JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x2E6A736F6E000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 ADD DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP3 ADD SWAP1 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x3F3 JUMPI POP PUSH2 0x3F3 DUP6 CALLER PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x448 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x220C PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x4B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2180 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x4C0 DUP6 DUP6 DUP6 DUP6 PUSH2 0x9BB JUMP JUMPDEST PUSH2 0x4CE DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xD0F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x4E0 DUP4 DUP4 DUP4 PUSH2 0xF86 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x541 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x21E0 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x55B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x585 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x629 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5A3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x5F3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x616 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x58B JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1031 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x4E0 DUP4 DUP4 DUP4 PUSH2 0x10E6 JUMP JUMPDEST PUSH2 0x6D6 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1326 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x757 JUMPI POP PUSH2 0x757 DUP6 CALLER PUSH2 0x6F3 JUMP JUMPDEST PUSH2 0x7AC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2121 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x818 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x20F6 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x824 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1570 JUMP JUMPDEST PUSH2 0x4CE DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1673 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x886 JUMPI POP PUSH1 0x1 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x1864 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x8D0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x272 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x0 JUMPDEST DUP3 ISZERO PUSH2 0x8E9 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP4 DIV SWAP3 POP PUSH2 0x8D5 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x902 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x92D JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x9B1 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x977 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x954 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0xA15 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x214B PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xC07 JUMPI PUSH2 0xAAA DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA31 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x18C1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xAF6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xB98 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB1F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB73 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1938 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xBE4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xA1A JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCB4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC9C JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xCF3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCDB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xD2E DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19B3 JUMP JUMPDEST ISZERO PUSH2 0xF7E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDE6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDCE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE25 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE0D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE61 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE49 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE8E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0xEC7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xEDE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xF7C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x226B PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xFBF SWAP1 DUP3 PUSH2 0x18C1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP1 DUP2 ADD DUP6 SWAP1 MSTORE DUP4 MLOAD SWAP2 SWAP4 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x106A SWAP1 DUP4 PUSH2 0x1938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP8 DUP2 MSTORE SWAP1 DUP2 ADD DUP7 SWAP1 MSTORE DUP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x6D6 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1673 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1141 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x21B0 PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x121E JUMPI PUSH2 0x11AF DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x115B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xA85 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x11FB JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1144 JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12CC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12B4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x130B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12F3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x1380 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x223B PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x145F JUMPI PUSH2 0x13F0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x139C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB73 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x143C JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1385 JUMP JUMPDEST POP DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x150D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14F5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x154C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1534 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x4CE PUSH1 0x0 DUP7 DUP7 DUP7 GAS DUP8 PUSH2 0xD0F JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x15A9 SWAP1 DUP3 PUSH2 0x18C1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x15F9 SWAP1 DUP3 PUSH2 0x1938 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1692 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19B3 JUMP JUMPDEST ISZERO PUSH2 0xF7E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x174B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1733 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1778 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x179B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x17AF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xF7C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x22AA PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x18B8 JUMPI POP PUSH1 0x1 PUSH2 0x272 JUMP JUMPDEST PUSH2 0x26F DUP3 PUSH2 0x19EA JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x1932 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x19AC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x19AC JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x272 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1A68 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1A7B PUSH2 0x1A76 DUP3 PUSH2 0x20D7 JUMP JUMPDEST PUSH2 0x20B3 JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1A9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1ABB JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1A9F JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1AD6 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1AEA JUMPI INVALID JUMPDEST PUSH2 0x1B1B PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x20B3 JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1B32 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1B5D JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1B66 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP2 POP PUSH2 0x1B74 PUSH1 0x20 DUP5 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1B94 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1B9D DUP7 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 POP PUSH2 0x1BAB PUSH1 0x20 DUP8 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1BC7 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1BD3 DUP10 DUP4 DUP11 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1BE8 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1BF4 DUP10 DUP4 DUP11 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1C09 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1C16 DUP9 DUP3 DUP10 ADD PUSH2 0x1AC6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1C3A JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1C43 DUP7 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 POP PUSH2 0x1C51 PUSH1 0x20 DUP8 ADD PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1C7A JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1C16 DUP9 DUP3 DUP10 ADD PUSH2 0x1AC6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1C9A JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1CA3 DUP5 PUSH2 0x1A34 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1CBF JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1CCB DUP8 DUP4 DUP9 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1CE0 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1CED DUP7 DUP3 DUP8 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1D0C JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1D15 DUP6 PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1D31 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x1D3D DUP9 DUP4 DUP10 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D52 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1D5E DUP9 DUP4 DUP10 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D73 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1D80 DUP8 DUP3 DUP9 ADD PUSH2 0x1AC6 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1D9E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1DA7 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1DBB JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1DD8 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1DE1 DUP4 PUSH2 0x1A34 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1E03 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1E0C DUP5 PUSH2 0x1A34 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1E36 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1E3F DUP6 PUSH2 0x1A34 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1E68 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1D80 DUP8 DUP3 DUP9 ADD PUSH2 0x1AC6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E86 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1E9D JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1EB0 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1EBE PUSH2 0x1A76 DUP3 PUSH2 0x20D7 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x1EDE JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x1F07 JUMPI PUSH2 0x1EF3 DUP2 PUSH2 0x1A34 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x1EE2 JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x1F1E JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1F2B DUP6 DUP3 DUP7 ADD PUSH2 0x1A58 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F46 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x19AC JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1F86 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1FC5 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x1FA9 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2008 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x1FEC JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2019 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x27 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D6574614D696E744275726E4D6F636B3A20494E56414C4944 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x5F4D4554484F4400000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x20CF JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x20EB JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x68427572 PUSH15 0x3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E23626174 PUSH4 0x684D696E PUSH21 0x3A20494E56414C49445F4152524159535F4C454E47 SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEA 0xC3 0x4C DUP2 SWAP10 EXTCODECOPY DUP1 SWAP3 GASLIMIT SGT 0x5F 0x28 0xE5 SWAP10 0xD6 DUP4 PUSH29 0x4733AD5E560F1263987FE0359DD62264736F6C63430007040033000000 ",
              "sourceMap": "195:2661:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2800:49;;;;;;;;;;:::i;:::-;;;;;;;;7127:132:21;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;711:185:19;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;840:155:23:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2312:522:21:-;;;;;;:::i;:::-;;:::i;:::-;;2156:117:19;;;;;;:::i;:::-;;:::i;7539:495:21:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6135:230::-;;;;;;:::i;:::-;;:::i;1262:140:19:-;;;;;;:::i;:::-;;:::i;2489:149::-;;;;;;:::i;:::-;;:::i;1667:172::-;;;;;;:::i;:::-;;:::i;6627:160:21:-;;;;;;:::i;:::-;;:::i;1373:556::-;;;;;;:::i;:::-;;:::i;7127:132::-;7233:16;;;;;7209:7;7233:16;;;;;;;;;;;:21;;;;;;;;;7127:132::o;711:185:19:-;835:4;854:37;878:12;854:23;:37::i;:::-;847:44;;711:185;;;;:::o;840:155:23:-;896:13;948:15;965:14;975:3;965:9;:14::i;:::-;931:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;931:58:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;931:58:23;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;840:155:23:o;2312:522:21:-;2498:10;:19;;;;;2497:60;;;2522:35;2539:5;2546:10;2522:16;:35::i;:::-;2489:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2623:17;;;2615:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2700:50;2723:5;2730:3;2735:4;2741:8;2700:22;:50::i;:::-;2756:73;2784:5;2791:3;2796:4;2802:8;2812:9;2823:5;2756:27;:73::i;:::-;2312:522;;;;;:::o;2156:117:19:-;2237:31;2249:5;2256:3;2261:6;2237:11;:31::i;:::-;2156:117;;;:::o;7539:495:21:-;7646:16;7698:4;:11;7680:7;:14;:29;7672:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7782:30;7829:7;:14;7815:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7815:29:21;;7782:62;;7900:9;7895:108;7919:7;:14;7915:1;:18;7895:108;;;7967:8;:20;7976:7;7984:1;7976:10;;;;;;;;;;;;;;7967:20;;;;;;;;;;;;;;;:29;7988:4;7993:1;7988:7;;;;;;;;;;;;;;7967:29;;;;;;;;;;;;7948:13;7962:1;7948:16;;;;;;;;;;;;;;;;;:48;7935:3;;7895:108;;;-1:-1:-1;8016:13:21;7539:495;-1:-1:-1;;;7539:495:21:o;6135:230::-;6267:10;6257:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;6312:48;;;;;;;6257:32;;6267:10;6312:48;;;;;;;;;;;6135:230;;:::o;1262:140:19:-;1361:36;1373:3;1378;1383:6;1391:5;1361:11;:36::i;:::-;1262:140;;;;:::o;2489:149::-;2595:38;2612:5;2619:4;2625:7;2595:16;:38::i;1667:172::-;1791:43;1808:3;1813:4;1819:7;1828:5;1791:16;:43::i;6627:160:21:-;6754:17;;;;6722:15;6754:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;6627:160::o;1373:556::-;1514:10;:19;;;;;1513:60;;;1538:35;1555:5;1562:10;1538:16;:35::i;:::-;1505:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:17;;;1626:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:43;1827:5;1834:3;1839;1844:7;1809:17;:43::i;:::-;1858:66;1881:5;1888:3;1893;1898:7;1907:9;1918:5;1858:22;:66::i;2054:234:23:-;2140:4;2156:50;;;2172:34;2156:50;2152:82;;;-1:-1:-1;2223:4:23;2216:11;;2152:82;2246:37;2270:12;2246:23;:37::i;2518:513::-;2572:27;2611:7;2607:38;;-1:-1:-1;2628:10:23;;;;;;;;;;;;;;;;;;;2607:38;2663:2;;2651:9;2737:50;2744:6;;2737:50;;2760:5;;2778:2;2773:7;;;;2737:50;;;2793:17;2823:3;2813:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2813:14:23;-1:-1:-1;2793:34:23;-1:-1:-1;2845:7:23;;;2892:84;2899:7;;2892:84;;2949:2;2944;:7;2939:2;:12;2928:25;;2916:4;2921:3;;;;;;;2916:9;;;;;;;;;;;:37;;;;;;;;;;-1:-1:-1;2967:2:23;2961:8;;;;2892:84;;;-1:-1:-1;3021:4:23;2518:513;-1:-1:-1;;;;;2518:513:23:o;4452:670:21:-;4606:8;:15;4591:4;:11;:30;4583:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4743:11;;4723:17;4792:243;4816:9;4812:1;:13;4792:243;;;4915:41;4944:8;4953:1;4944:11;;;;;;;;;;;;;;4915:8;:15;4924:5;4915:15;;;;;;;;;;;;;;;:24;4931:4;4936:1;4931:7;;;;;;;;;;;;;;4915:24;;;;;;;;;;;;:28;;:41;;;;:::i;:::-;4888:8;:15;4897:5;4888:15;;;;;;;;;;;;;;;:24;4904:4;4909:1;4904:7;;;;;;;;;;;;;;4888:24;;;;;;;;;;;:68;;;;4989:39;5016:8;5025:1;5016:11;;;;;;;;;;;;;;4989:8;:13;4998:3;4989:13;;;;;;;;;;;;;;;:22;5003:4;5008:1;5003:7;;;;;;;;;;;;;;4989:22;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;4964:8;:13;4973:3;4964:13;;;;;;;;;;;;;;;:22;4978:4;4983:1;4978:7;;;;;;;;;;;;;;;;;;;4964:22;;;;;;;;;;-1:-1:-1;4964:22:21;:64;4827:3;;4792:243;;;;5097:3;5064:53;;5090:5;5064:53;;5078:10;5064:53;;;5102:4;5108:8;5064:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:670;;;;;:::o;5235:503::-;5456:16;:3;:14;;;:16::i;:::-;5452:282;;;5482:13;5520:3;5498:49;;;5553:9;5564:10;5576:5;5583:4;5589:8;5599:5;5498:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5498:107:21;;-1:-1:-1;5621:38:21;;;5631:28;5621:38;5613:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5452:282;;5235:503;;;;;;:::o;2456:257:24:-;2584:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;2609:7;2584:24;:33::i;:::-;2561:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;2647:61;;;;;;;;;;;;;2561:8;;2662:10;;2647:61;;;;;;;;;;2456:257;;;:::o;716:401::-;855:13;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:31;;878:7;855:22;:31::i;:::-;834:13;;;:8;:13;;;;;;;;;;;:18;;;;;;;;:52;;;;916:59;;;;;;;;;;;;;834:13;;:8;;931:10;;916:59;;;;;;;;1039:73;1070:3;1076;1081;1086:7;1095:9;1106:5;1039:22;:73::i;2967:552::-;3123:11;;3157:15;;3148:24;;3140:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3266:9;3261:151;3285:5;3281:1;:9;3261:151;;;3364:41;3393:8;3402:1;3393:11;;;;;;;;;;;;;;3364:8;:15;3373:5;3364:15;;;;;;;;;;;;;;;:24;3380:4;3385:1;3380:7;;;;;;;3364:41;3337:8;:15;3346:5;3337:15;;;;;;;;;;;;;;;:24;3353:4;3358:1;3353:7;;;;;;;;;;;;;;;;;;;3337:24;;;;;;;;;;-1:-1:-1;3337:24:24;:68;3292:3;;3261:151;;;;3493:3;3452:62;;3478:5;3452:62;;3466:10;3452:62;;;3499:4;3505:8;3452:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2967:552;;;;:::o;1395:716::-;1542:8;:15;1527:4;:11;:30;1519:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1667:11;;1651:13;1715:147;1739:5;1735:1;:9;1715:147;;;1816:39;1843:8;1852:1;1843:11;;;;;;;;;;;;;;1816:8;:13;1825:3;1816:13;;;;;;;;;;;;;;;:22;1830:4;1835:1;1830:7;;;;;;;1816:39;1791:8;:13;1800:3;1791:13;;;;;;;;;;;;;;;:22;1805:4;1810:1;1805:7;;;;;;;;;;;;;;;;;;;1791:22;;;;;;;;;;-1:-1:-1;1791:22:24;:64;1746:3;;1715:147;;;;1942:3;1902:60;;1936:3;1902:60;;1916:10;1902:60;;;1947:4;1953:8;1902:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2026:80;2062:3;2068;2073:4;2079:8;2089:9;2100:5;2026:27;:80::i;3224:367:21:-;3376:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;3401:7;3376:24;:33::i;:::-;3353:15;;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;3455:13;;;;;;;;;;;:18;;;;;;;;:31;;3478:7;3455:22;:31::i;:::-;3434:13;;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:52;;;;3534;;;;;;;;;;;;;3434:13;;3534:52;;;;3549:10;;3534:52;;;;;;;;;;;3224:367;;;;:::o;3699:456::-;3891:16;:3;:14;;;:16::i;:::-;3887:264;;;3917:13;3955:3;3933:44;;;3983:9;3994:10;4006:5;4013:3;4018:7;4027:5;3933:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3933:100:21;;-1:-1:-1;4049:32:21;;;4059:22;4049:32;4041:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8371:226;8457:4;8473:42;;;8489:26;8473:42;8469:74;;;-1:-1:-1;8532:4:21;8525:11;;8469:74;8555:37;8579:12;8555:23;:37::i;1186:158:31:-;1244:7;1272:1;1267;:6;;1259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1319:5:31;;;1186:158::o;1419:::-;1477:7;1504:5;;;1523:6;;;;1515:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:1;1419:158;-1:-1:-1;;;1419:158:31:o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;882:52;-1:-1:-1;;541:398:27:o;259:148:28:-;355:47;;;371:31;355:47;259:148;;;:::o;14:198:33:-;84:20;;144:42;133:54;;123:65;;113:2;;202:1;199;192:12;217:692;;330:3;323:4;315:6;311:17;307:27;297:2;;352:5;345;338:20;297:2;396:6;383:20;421:69;436:53;482:6;436:53;:::i;:::-;421:69;:::i;:::-;524:21;;;412:78;-1:-1:-1;564:4:33;584:14;;;;618:15;;;664;;;652:28;;648:37;;645:46;-1:-1:-1;642:2:33;;;704:1;701;694:12;642:2;726:1;736:167;750:6;747:1;744:13;736:167;;;811:17;;799:30;;849:12;;;;881;;;;772:1;765:9;736:167;;;740:3;;;;;287:622;;;;:::o;914:580::-;;1011:3;1004:4;996:6;992:17;988:27;978:2;;1033:5;1026;1019:20;978:2;1077:6;1064:20;1107:18;1099:6;1096:30;1093:2;;;1129:9;1093:2;1158:117;1269:4;1200:66;1193:4;1185:6;1181:17;1177:90;1173:101;1158:117;:::i;:::-;1149:126;;1298:6;1291:5;1284:21;1352:3;1345:4;1336:6;1328;1324:19;1320:30;1317:39;1314:2;;;1369:1;1366;1359:12;1314:2;1432:6;1425:4;1417:6;1413:17;1406:4;1399:5;1395:16;1382:57;1486:1;1459:18;;;1479:4;1455:29;1448:40;1463:5;968:526;-1:-1:-1;;968:526:33:o;1499:274::-;;;1628:2;1616:9;1607:7;1603:23;1599:32;1596:2;;;1649:6;1641;1634:22;1596:2;1677:31;1698:9;1677:31;:::i;:::-;1667:41;;1727:40;1763:2;1752:9;1748:18;1727:40;:::i;:::-;1717:50;;1586:187;;;;;:::o;1778:1001::-;;;;;;2017:3;2005:9;1996:7;1992:23;1988:33;1985:2;;;2039:6;2031;2024:22;1985:2;2067:31;2088:9;2067:31;:::i;:::-;2057:41;;2117:40;2153:2;2142:9;2138:18;2117:40;:::i;:::-;2107:50;;2208:2;2197:9;2193:18;2180:32;2231:18;2272:2;2264:6;2261:14;2258:2;;;2293:6;2285;2278:22;2258:2;2321:67;2380:7;2371:6;2360:9;2356:22;2321:67;:::i;:::-;2311:77;;2441:2;2430:9;2426:18;2413:32;2397:48;;2470:2;2460:8;2457:16;2454:2;;;2491:6;2483;2476:22;2454:2;2519:69;2580:7;2569:8;2558:9;2554:24;2519:69;:::i;:::-;2509:79;;2641:3;2630:9;2626:19;2613:33;2597:49;;2671:2;2661:8;2658:16;2655:2;;;2692:6;2684;2677:22;2655:2;;2720:53;2765:7;2754:8;2743:9;2739:24;2720:53;:::i;:::-;2710:63;;;1975:804;;;;;;;;:::o;2784:632::-;;;;;;2973:3;2961:9;2952:7;2948:23;2944:33;2941:2;;;2995:6;2987;2980:22;2941:2;3023:31;3044:9;3023:31;:::i;:::-;3013:41;;3073:40;3109:2;3098:9;3094:18;3073:40;:::i;:::-;3063:50;;3160:2;3149:9;3145:18;3132:32;3122:42;;3211:2;3200:9;3196:18;3183:32;3173:42;;3266:3;3255:9;3251:19;3238:33;3294:18;3286:6;3283:30;3280:2;;;3331:6;3323;3316:22;3280:2;3359:51;3402:7;3393:6;3382:9;3378:22;3359:51;:::i;3421:713::-;;;;3617:2;3605:9;3596:7;3592:23;3588:32;3585:2;;;3638:6;3630;3623:22;3585:2;3666:31;3687:9;3666:31;:::i;:::-;3656:41;;3748:2;3737:9;3733:18;3720:32;3771:18;3812:2;3804:6;3801:14;3798:2;;;3833:6;3825;3818:22;3798:2;3861:67;3920:7;3911:6;3900:9;3896:22;3861:67;:::i;:::-;3851:77;;3981:2;3970:9;3966:18;3953:32;3937:48;;4010:2;4000:8;3997:16;3994:2;;;4031:6;4023;4016:22;3994:2;;4059:69;4120:7;4109:8;4098:9;4094:24;4059:69;:::i;:::-;4049:79;;;3575:559;;;;;:::o;4139:924::-;;;;;4361:3;4349:9;4340:7;4336:23;4332:33;4329:2;;;4383:6;4375;4368:22;4329:2;4411:31;4432:9;4411:31;:::i;:::-;4401:41;;4493:2;4482:9;4478:18;4465:32;4516:18;4557:2;4549:6;4546:14;4543:2;;;4578:6;4570;4563:22;4543:2;4606:67;4665:7;4656:6;4645:9;4641:22;4606:67;:::i;:::-;4596:77;;4726:2;4715:9;4711:18;4698:32;4682:48;;4755:2;4745:8;4742:16;4739:2;;;4776:6;4768;4761:22;4739:2;4804:69;4865:7;4854:8;4843:9;4839:24;4804:69;:::i;:::-;4794:79;;4926:2;4915:9;4911:18;4898:32;4882:48;;4955:2;4945:8;4942:16;4939:2;;;4976:6;4968;4961:22;4939:2;;5004:53;5049:7;5038:8;5027:9;5023:24;5004:53;:::i;:::-;4994:63;;;4319:744;;;;;;;:::o;5068:369::-;;;5194:2;5182:9;5173:7;5169:23;5165:32;5162:2;;;5215:6;5207;5200:22;5162:2;5243:31;5264:9;5243:31;:::i;:::-;5233:41;;5324:2;5313:9;5309:18;5296:32;5371:5;5364:13;5357:21;5350:5;5347:32;5337:2;;5398:6;5390;5383:22;5337:2;5426:5;5416:15;;;5152:285;;;;;:::o;5442:266::-;;;5571:2;5559:9;5550:7;5546:23;5542:32;5539:2;;;5592:6;5584;5577:22;5539:2;5620:31;5641:9;5620:31;:::i;:::-;5610:41;5698:2;5683:18;;;;5670:32;;-1:-1:-1;;;5529:179:33:o;5713:334::-;;;;5859:2;5847:9;5838:7;5834:23;5830:32;5827:2;;;5880:6;5872;5865:22;5827:2;5908:31;5929:9;5908:31;:::i;:::-;5898:41;5986:2;5971:18;;5958:32;;-1:-1:-1;6037:2:33;6022:18;;;6009:32;;5817:230;-1:-1:-1;;;5817:230:33:o;6052:555::-;;;;;6224:3;6212:9;6203:7;6199:23;6195:33;6192:2;;;6246:6;6238;6231:22;6192:2;6274:31;6295:9;6274:31;:::i;:::-;6264:41;;6352:2;6341:9;6337:18;6324:32;6314:42;;6403:2;6392:9;6388:18;6375:32;6365:42;;6458:2;6447:9;6443:18;6430:32;6485:18;6477:6;6474:30;6471:2;;;6522:6;6514;6507:22;6471:2;6550:51;6593:7;6584:6;6573:9;6569:22;6550:51;:::i;6612:1246::-;;;6791:2;6779:9;6770:7;6766:23;6762:32;6759:2;;;6812:6;6804;6797:22;6759:2;6857:9;6844:23;6886:18;6927:2;6919:6;6916:14;6913:2;;;6948:6;6940;6933:22;6913:2;6991:6;6980:9;6976:22;6966:32;;7036:7;7029:4;7025:2;7021:13;7017:27;7007:2;;7063:6;7055;7048:22;7007:2;7108;7095:16;7131:69;7146:53;7192:6;7146:53;:::i;7131:69::-;7222:3;7246:6;7241:3;7234:19;7272:4;7301:2;7296:3;7292:12;7285:19;;7332:2;7328;7324:11;7385:7;7380:2;7374;7366:6;7362:15;7358:2;7354:24;7350:33;7347:46;7344:2;;;7411:6;7403;7396:22;7344:2;7438:6;7429:15;;7453:175;7467:6;7464:1;7461:13;7453:175;;;7528:25;7549:3;7528:25;:::i;:::-;7516:38;;7489:1;7482:9;;;;;7574:12;;;;7606;;7453:175;;;-1:-1:-1;7647:5:33;;-1:-1:-1;7690:18:33;;7677:32;;-1:-1:-1;;;7721:16:33;;;7718:2;;;7755:6;7747;7740:22;7718:2;;7783:69;7844:7;7833:8;7822:9;7818:24;7783:69;:::i;:::-;7773:79;;;6749:1109;;;;;:::o;7863:352::-;;7974:2;7962:9;7953:7;7949:23;7945:32;7942:2;;;7995:6;7987;7980:22;7942:2;8039:9;8026:23;8089:66;8082:5;8078:78;8071:5;8068:89;8058:2;;8176:6;8168;8161:22;8220:190;;8332:2;8320:9;8311:7;8307:23;8303:32;8300:2;;;8353:6;8345;8338:22;8300:2;-1:-1:-1;8381:23:33;;8290:120;-1:-1:-1;8290:120:33:o;8415:635::-;8586:2;8638:21;;;8708:13;;8611:18;;;8730:22;;;8415:635;;8586:2;8809:15;;;;8783:2;8768:18;;;8415:635;8855:169;8869:6;8866:1;8863:13;8855:169;;;8930:13;;8918:26;;8999:15;;;;8964:12;;;;8891:1;8884:9;8855:169;;;-1:-1:-1;9041:3:33;;8566:484;-1:-1:-1;;;;;;8566:484:33:o;9055:187::-;9220:14;;9213:22;9195:41;;9183:2;9168:18;;9150:92::o;9247:662::-;;9388:2;9417;9406:9;9399:21;9449:6;9443:13;9492:6;9487:2;9476:9;9472:18;9465:34;9517:4;9530:140;9544:6;9541:1;9538:13;9530:140;;;9639:14;;;9635:23;;9629:30;9605:17;;;9624:2;9601:26;9594:66;9559:10;;9530:140;;;9688:6;9685:1;9682:13;9679:2;;;9758:4;9753:2;9744:6;9733:9;9729:22;9725:31;9718:45;9679:2;-1:-1:-1;9825:2:33;9813:15;9830:66;9809:88;9794:104;;;;9900:2;9790:113;;9368:541;-1:-1:-1;;;9368:541:33:o;9914:403::-;10116:2;10098:21;;;10155:2;10135:18;;;10128:30;10194:34;10189:2;10174:18;;10167:62;10265:9;10260:2;10245:18;;10238:37;10307:3;10292:19;;10088:229::o;10322:177::-;10468:25;;;10456:2;10441:18;;10423:76::o;10504:242::-;10574:2;10568:9;10604:17;;;10651:18;10636:34;;10672:22;;;10633:62;10630:2;;;10698:9;10630:2;10725;10718:22;10548:198;;-1:-1:-1;10548:198:33:o;10751:183::-;;10850:18;10842:6;10839:30;10836:2;;;10872:9;10836:2;-1:-1:-1;10923:4:33;10904:17;;;10900:28;;10826:108::o"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "batchBurnMock(address,uint256[],uint256[])": "bd7a6c41",
              "batchMintMock(address,uint256[],uint256[],bytes)": "d7a0ad90",
              "burnMock(address,uint256,uint256)": "437ecbe9",
              "isApprovedForAll(address,address)": "e985e9c5",
              "mintMock(address,uint256,uint256,bytes)": "a3f091f5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "multi-token-standard/contracts/mocks/ERC1155MintBurnPackedBalanceMock.sol": {
        "ERC1155MintBurnPackedBalanceMock": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_uri",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "stateMutability": "nonpayable",
              "type": "fallback"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                }
              ],
              "name": "batchBurnMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_values",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "batchMintMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                }
              ],
              "name": "burnMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "getIDBinIndex",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "bin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_binValues",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_index",
                  "type": "uint256"
                }
              ],
              "name": "getValueInBin",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_value",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "mintMock",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50612796806100206000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c8063a3f091f51161008c578063db90e83c11610066578063db90e83c14610221578063e985e9c514610242578063eaec5f8114610255578063f242432a14610268576100e9565b8063a3f091f5146101e8578063bd7a6c41146101fb578063d7a0ad901461020e576100e9565b80632eb2c2d6116100c85780632eb2c2d61461018d578063437ecbe9146101a25780634e1273f4146101b5578063a22cb465146101d5576100e9565b8062fdd58e1461012457806301ffc9a71461014d5780630e89341c1461016d575b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011b90612359565b60405180910390fd5b6101376101323660046120b1565b61027b565b60405161014491906123b6565b60405180910390f35b61016061015b366004612220565b6102d0565b60405161014491906122dd565b61018061017b366004612260565b6102e3565b60405161014491906122e8565b6101a061019b366004611e68565b610436565b005b6101a06101b03660046120da565b610541565b6101c86101c336600461215f565b610551565b6040516101449190612299565b6101a06101e3366004612077565b6107d0565b6101a06101f636600461210c565b610869565b6101a0610209366004611f71565b61087b565b6101a061021c366004611fe2565b610886565b61023461022f366004612260565b610892565b6040516101449291906123bf565b610160610250366004611e36565b61089f565b610137610263366004612278565b6108da565b6101a0610276366004611f0e565b6108ed565b600080600061028984610892565b73ffffffffffffffffffffffffffffffffffffffff871660009081526020818152604080832085845290915290205491935091506102c790826108da565b95945050505050565b60006102db826109f1565b90505b919050565b606060026102f083610a4e565b604051602001808380546001816001161561010002031660029004801561034e5780601f1061032c57610100808354040283529182019161034e565b820191906000526020600020905b81548152906001019060200180831161033a575b5050825160208401908083835b6020831061039857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161035b565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790527f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe50181526005909201905295945050505050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061045f575061045f853361089f565b6104b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c81526020018061257e603c913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612449603d913960400191505060405180910390fd5b61052c85858585610b7a565b61053a858585855a86610f87565b5050505050565b61054c8383836111fe565b505050565b815181516060919081146105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806124106039913960400191505060405180910390fd5b6000806105d0856000815181106105c357fe5b6020026020010151610892565b915091506000806000886000815181106105e657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020549050600083905060608567ffffffffffffffff8111801561065a57600080fd5b50604051908082528060200260200182016040528015610684578160200160208202803683370190505b50905061069183856108da565b8160008151811061069e57fe5b602090810291909101015260015b868110156107c3576106c38982815181106105c357fe5b9096509450828614158061072c57508981815181106106de57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a600183038151811061070b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561079a576000808b838151811061074057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000205493508592505b6107a484866108da565b8282815181106107b057fe5b60209081029190910101526001016106ac565b5098975050505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61087584848484611268565b50505050565b61054c8383836112dc565b61087584848484611485565b6008810491600790911690565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6020810282901c63ffffffff1692915050565b3373ffffffffffffffffffffffffffffffffffffffff861614806109165750610916853361089f565b61096b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806124b96037913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806126746038913960400191505060405180910390fd5b6109e38585858561170f565b61053a858585855a866117b3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c000000000000000000000000000000000000000000000000000000001415610a45575060016102de565b6102db826119a4565b606081610a8f575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526102de565b818060005b8215610aa857600101600a83049250610a94565b60608167ffffffffffffffff81118015610ac157600080fd5b506040519080825280601f01601f191660200182016040528015610aec576020820181803683370190505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8315610b7057600a840660300160f81b82828060019003935081518110610b3657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350610b13565b5095945050505050565b815181518114610bd5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806124f06042913960600191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610c115750600081115b15610de357600080610c29856000815181106105c357fe5b73ffffffffffffffffffffffffffffffffffffffff8916600090815260208181526040808320858452909152812054875193955091935091610c819190849088908590610c7257fe5b60200260200101516001611a01565b73ffffffffffffffffffffffffffffffffffffffff881660009081526020818152604080832087845290915281205487519293509091610cd79190859089908590610cc857fe5b60200260200101516000611a01565b90508360015b86811015610d9157610cf48982815181106105c357fe5b9096509450818614610d635773ffffffffffffffffffffffffffffffffffffffff8b811660009081526020818152604080832086845280835281842098909855928d16825281815282822094825284815282822095909555878152948452808520549290935291909220549084905b610d7484868a8481518110610c7257fe5b9350610d8783868a8481518110610cc857fe5b9250600101610cdd565b505073ffffffffffffffffffffffffffffffffffffffff808a16600090815260208181526040808320888452825280832095909555918a16815280825283812095815294905292209190915550610e80565b60005b81811015610e7e57828181518110610dfa57fe5b6020026020010151610e1f87868481518110610e1257fe5b602002602001015161027b565b1015610e76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806125f76036913960400191505060405180910390fd5b600101610de6565b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610f2c578181015183820152602001610f14565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610f6b578181015183820152602001610f53565b5050505090500194505050505060405180910390a45050505050565b610fa68573ffffffffffffffffffffffffffffffffffffffff16611c14565b156111f65760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561105e578181015183820152602001611046565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561109d578181015183820152602001611085565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156110d95781810151838201526020016110c1565b50505050905090810190601f1680156111065780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561112b57600080fd5b5087f115801561113f573d6000803e3d6000fd5b50505050506040513d602081101561115657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146111f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604c815260200180612532604c913960600191505060405180910390fd5b505b505050505050565b61120b8383836001611c4e565b6040805183815260208101839052815160009273ffffffffffffffffffffffffffffffffffffffff87169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a4505050565b6112758484846000611c4e565b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff87169260009233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a461087560008585855a866117b3565b815181518114611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806125ba603d913960400191505060405180910390fd5b60005b8181101561137d576113758585838151811061135257fe5b602002602001015185848151811061136657fe5b60200260200101516001611c4e565b60010161133a565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561142b578181015183820152602001611413565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561146a578181015183820152602001611452565b5050505090500194505050505060405180910390a450505050565b81518351146114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001806126f1603e913960400191505060405180910390fd5b8251156115ff576000806114f9856000815181106105c357fe5b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091528120548751939550919350916115429190849088908590610cc857fe5b86519091508360015b828110156115c6576115628982815181106105c357fe5b90965094508186146115ab5773ffffffffffffffffffffffffffffffffffffffff8a16600090815260208181526040808320948352939052828120949094558584529220549184905b6115bc84868a8481518110610cc857fe5b935060010161154b565b50505073ffffffffffffffffffffffffffffffffffffffff87166000908152602081815260408083209583529490529290922091909155505b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156116ac578181015183820152602001611694565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156116eb5781810151838201526020016116d3565b5050505090500194505050505060405180910390a461087560008585855a86610f87565b61171c8483836001611c4e565b6117298383836000611c4e565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051808381526020018281526020019250505060405180910390a450505050565b6117d28573ffffffffffffffffffffffffffffffffffffffff16611c14565b156111f65760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561188b578181015183820152602001611873565b50505050905090810190601f1680156118b85780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156118db57600080fd5b5087f11580156118ef573d6000803e3d6000fd5b50505050506040513d602081101561190657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146111f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604781526020018061262d6047913960600191505060405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156119f8575060016102de565b6102db82611cd5565b60006020840263ffffffff82846001811115611a1957fe5b1415611ae75784821b8701925086831015611a7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061272f6032913960400191505060405180910390fd5b64010000000087831c8216860110611ae2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061272f6032913960400191505060405180910390fd5b611c0a565b6001846001811115611af557fe5b1415611bb95784821b8703925086831115611b5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806124866033913960400191505060405180910390fd5b84818389901c161015611ae2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806124866033913960400191505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806126ac6045913960600191505060405180910390fd5b5050949350505050565b6000813f8015801590611c4757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b600080611c5a85610892565b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091529020549193509150611c9a90828686611a01565b73ffffffffffffffffffffffffffffffffffffffff909616600090815260208181526040808320948352939052919091209490945550505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146102de57600080fd5b600082601f830112611d53578081fd5b8135611d66611d61826123f1565b6123cd565b818152915060208083019084810181840286018201871015611d8757600080fd5b60005b84811015611da657813584529282019290820190600101611d8a565b505050505092915050565b600082601f830112611dc1578081fd5b813567ffffffffffffffff811115611dd557fe5b611e0660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123cd565b9150808252836020828501011115611e1d57600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611e48578182fd5b611e5183611d1f565b9150611e5f60208401611d1f565b90509250929050565b600080600080600060a08688031215611e7f578081fd5b611e8886611d1f565b9450611e9660208701611d1f565b9350604086013567ffffffffffffffff80821115611eb2578283fd5b611ebe89838a01611d43565b94506060880135915080821115611ed3578283fd5b611edf89838a01611d43565b93506080880135915080821115611ef4578283fd5b50611f0188828901611db1565b9150509295509295909350565b600080600080600060a08688031215611f25578081fd5b611f2e86611d1f565b9450611f3c60208701611d1f565b93506040860135925060608601359150608086013567ffffffffffffffff811115611f65578182fd5b611f0188828901611db1565b600080600060608486031215611f85578283fd5b611f8e84611d1f565b9250602084013567ffffffffffffffff80821115611faa578384fd5b611fb687838801611d43565b93506040860135915080821115611fcb578283fd5b50611fd886828701611d43565b9150509250925092565b60008060008060808587031215611ff7578384fd5b61200085611d1f565b9350602085013567ffffffffffffffff8082111561201c578485fd5b61202888838901611d43565b9450604087013591508082111561203d578384fd5b61204988838901611d43565b9350606087013591508082111561205e578283fd5b5061206b87828801611db1565b91505092959194509250565b60008060408385031215612089578182fd5b61209283611d1f565b9150602083013580151581146120a6578182fd5b809150509250929050565b600080604083850312156120c3578182fd5b6120cc83611d1f565b946020939093013593505050565b6000806000606084860312156120ee578283fd5b6120f784611d1f565b95602085013595506040909401359392505050565b60008060008060808587031215612121578384fd5b61212a85611d1f565b93506020850135925060408501359150606085013567ffffffffffffffff811115612153578182fd5b61206b87828801611db1565b60008060408385031215612171578081fd5b823567ffffffffffffffff80821115612188578283fd5b818501915085601f83011261219b578283fd5b81356121a9611d61826123f1565b80828252602080830192508086018a8283870289010111156121c9578788fd5b8796505b848710156121f2576121de81611d1f565b8452600196909601959281019281016121cd565b509096508701359350505080821115612209578283fd5b5061221685828601611d43565b9150509250929050565b600060208284031215612231578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611c47578182fd5b600060208284031215612271578081fd5b5035919050565b6000806040838503121561228a578182fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156122d1578351835292840192918401916001016122b5565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b81811015612314578581018301518582016040015282016122f8565b818111156123255783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526034908201527f455243313135354d6574614d696e744275726e5061636b656442616c616e636560408201527f4d6f636b3a20494e56414c49445f4d4554484f44000000000000000000000000606082015260800190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156123e957fe5b604052919050565b600067ffffffffffffffff82111561240557fe5b506020908102019056fe455243313135355061636b656442616c616e63652362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e475448455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20554e444552464c4f57455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e5061636b656442616c616e63652362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20554e444552464c4f57455243313135355061636b656442616c616e6365235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20494e56414c49445f42494e5f57524954455f4f5045524154494f4e455243313135354d696e744275726e5061636b656442616c616e6365235f62617463684d696e743a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a204f564552464c4f57a2646970667358221220213a2ed5aacef9797af61dfa6eb571eb135f3375ad4e67a0daef3df230ab7a1664736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2796 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3F091F5 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDB90E83C GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDB90E83C EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xEAEC5F81 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x268 JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH4 0xA3F091F5 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0xBD7A6C41 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0xD7A0AD90 EQ PUSH2 0x20E JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x437ECBE9 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1D5 JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x16D JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11B SWAP1 PUSH2 0x2359 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x137 PUSH2 0x132 CALLDATASIZE PUSH1 0x4 PUSH2 0x20B1 JUMP JUMPDEST PUSH2 0x27B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x23B6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x160 PUSH2 0x15B CALLDATASIZE PUSH1 0x4 PUSH2 0x2220 JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x22DD JUMP JUMPDEST PUSH2 0x180 PUSH2 0x17B CALLDATASIZE PUSH1 0x4 PUSH2 0x2260 JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x22E8 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x1E68 JUMP JUMPDEST PUSH2 0x436 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A0 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x20DA JUMP JUMPDEST PUSH2 0x541 JUMP JUMPDEST PUSH2 0x1C8 PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x215F JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x2299 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x1E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2077 JUMP JUMPDEST PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x210C JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F71 JUMP JUMPDEST PUSH2 0x87B JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE2 JUMP JUMPDEST PUSH2 0x886 JUMP JUMPDEST PUSH2 0x234 PUSH2 0x22F CALLDATASIZE PUSH1 0x4 PUSH2 0x2260 JUMP JUMPDEST PUSH2 0x892 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP3 SWAP2 SWAP1 PUSH2 0x23BF JUMP JUMPDEST PUSH2 0x160 PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x89F JUMP JUMPDEST PUSH2 0x137 PUSH2 0x263 CALLDATASIZE PUSH1 0x4 PUSH2 0x2278 JUMP JUMPDEST PUSH2 0x8DA JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x276 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F0E JUMP JUMPDEST PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x289 DUP5 PUSH2 0x892 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x2C7 SWAP1 DUP3 PUSH2 0x8DA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DB DUP3 PUSH2 0x9F1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH2 0x2F0 DUP4 PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x32C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x33A JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x398 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x35B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x2E6A736F6E000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 ADD DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP3 ADD SWAP1 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x45F JUMPI POP PUSH2 0x45F DUP6 CALLER PUSH2 0x89F JUMP JUMPDEST PUSH2 0x4B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x257E PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x520 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2449 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x52C DUP6 DUP6 DUP6 DUP6 PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x53A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xF87 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x54C DUP4 DUP4 DUP4 PUSH2 0x11FE JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 SWAP1 DUP2 EQ PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2410 PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5D0 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x892 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP4 SWAP1 POP PUSH1 0x60 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x684 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x691 DUP4 DUP6 PUSH2 0x8DA JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x69E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x7C3 JUMPI PUSH2 0x6C3 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP3 DUP7 EQ ISZERO DUP1 PUSH2 0x72C JUMPI POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x6DE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x70B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x79A JUMPI PUSH1 0x0 DUP1 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x740 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP4 POP DUP6 SWAP3 POP JUMPDEST PUSH2 0x7A4 DUP5 DUP7 PUSH2 0x8DA JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7B0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x6AC JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x875 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1268 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x54C DUP4 DUP4 DUP4 PUSH2 0x12DC JUMP JUMPDEST PUSH2 0x875 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1485 JUMP JUMPDEST PUSH1 0x8 DUP2 DIV SWAP2 PUSH1 0x7 SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL DUP3 SWAP1 SHR PUSH4 0xFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x916 JUMPI POP PUSH2 0x916 DUP6 CALLER PUSH2 0x89F JUMP JUMPDEST PUSH2 0x96B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24B9 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x9D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2674 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9E3 DUP6 DUP6 DUP6 DUP6 PUSH2 0x170F JUMP JUMPDEST PUSH2 0x53A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x17B3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xA45 JUMPI POP PUSH1 0x1 PUSH2 0x2DE JUMP JUMPDEST PUSH2 0x2DB DUP3 PUSH2 0x19A4 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xA8F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2DE JUMP JUMPDEST DUP2 DUP1 PUSH1 0x0 JUMPDEST DUP3 ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP4 DIV SWAP3 POP PUSH2 0xA94 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xAEC JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0xB70 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0xB36 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0xB13 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0xBD5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24F0 PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xC11 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xDE3 JUMPI PUSH1 0x0 DUP1 PUSH2 0xC29 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0xC81 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xC72 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1A01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0xCD7 SWAP2 SWAP1 DUP6 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH2 0xCC8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH2 0x1A01 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xD91 JUMPI PUSH2 0xCF4 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0xD63 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SWAP9 SWAP1 SWAP9 SSTORE SWAP3 DUP14 AND DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP5 DUP3 MSTORE DUP5 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP8 DUP2 MSTORE SWAP5 DUP5 MSTORE DUP1 DUP6 KECCAK256 SLOAD SWAP3 SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 SLOAD SWAP1 DUP5 SWAP1 JUMPDEST PUSH2 0xD74 DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC72 JUMPI INVALID JUMPDEST SWAP4 POP PUSH2 0xD87 DUP4 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCC8 JUMPI INVALID JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xCDD JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP2 DUP11 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP4 DUP2 KECCAK256 SWAP6 DUP2 MSTORE SWAP5 SWAP1 MSTORE SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP PUSH2 0xE80 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE7E JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xDFA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xE1F DUP8 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE12 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x27B JUMP JUMPDEST LT ISZERO PUSH2 0xE76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x25F7 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0xDE6 JUMP JUMPDEST POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF2C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF14 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF53 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFA6 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST ISZERO PUSH2 0x11F6 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x105E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1046 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x109D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1085 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10D9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10C1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1106 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x112B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x113F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2532 PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x120B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH2 0x1275 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 PUSH1 0x0 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x875 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x17B3 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1337 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x25BA PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x137D JUMPI PUSH2 0x1375 DUP6 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1352 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1366 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x133A JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x142B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1413 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x146A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1452 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x14DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26F1 PUSH1 0x3E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x15FF JUMPI PUSH1 0x0 DUP1 PUSH2 0x14F9 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0x1542 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xCC8 JUMPI INVALID JUMPDEST DUP7 MLOAD SWAP1 SWAP2 POP DUP4 PUSH1 0x1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x15C6 JUMPI PUSH2 0x1562 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0x15AB JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE DUP3 DUP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP6 DUP5 MSTORE SWAP3 KECCAK256 SLOAD SWAP2 DUP5 SWAP1 JUMPDEST PUSH2 0x15BC DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCC8 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x1 ADD PUSH2 0x154B JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP6 DUP4 MSTORE SWAP5 SWAP1 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1694 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x875 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xF87 JUMP JUMPDEST PUSH2 0x171C DUP5 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH2 0x1729 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1C4E JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x17D2 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST ISZERO PUSH2 0x11F6 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x188B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1873 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18B8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x18EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x262D PUSH1 0x47 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x19F8 JUMPI POP PUSH1 0x1 PUSH2 0x2DE JUMP JUMPDEST PUSH2 0x2DB DUP3 PUSH2 0x1CD5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP5 MUL PUSH4 0xFFFFFFFF DUP3 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1A19 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1AE7 JUMPI DUP5 DUP3 SHL DUP8 ADD SWAP3 POP DUP7 DUP4 LT ISZERO PUSH2 0x1A7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x272F PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH5 0x100000000 DUP8 DUP4 SHR DUP3 AND DUP7 ADD LT PUSH2 0x1AE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x272F PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C0A JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1AF5 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1BB9 JUMPI DUP5 DUP3 SHL DUP8 SUB SWAP3 POP DUP7 DUP4 GT ISZERO PUSH2 0x1B5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2486 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 DUP2 DUP4 DUP10 SWAP1 SHR AND LT ISZERO PUSH2 0x1AE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2486 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26AC PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C47 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 EQ ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C5A DUP6 PUSH2 0x892 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x1C9A SWAP1 DUP3 DUP7 DUP7 PUSH2 0x1A01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D53 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D66 PUSH2 0x1D61 DUP3 PUSH2 0x23F1 JUMP JUMPDEST PUSH2 0x23CD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1D87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DA6 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1D8A JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DC1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DD5 JUMPI INVALID JUMPDEST PUSH2 0x1E06 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x23CD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1E1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E48 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1E51 DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP2 POP PUSH2 0x1E5F PUSH1 0x20 DUP5 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1E7F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1E88 DUP7 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 POP PUSH2 0x1E96 PUSH1 0x20 DUP8 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1EB2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1EBE DUP10 DUP4 DUP11 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1ED3 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1EDF DUP10 DUP4 DUP11 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1EF4 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1F01 DUP9 DUP3 DUP10 ADD PUSH2 0x1DB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1F25 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1F2E DUP7 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 POP PUSH2 0x1F3C PUSH1 0x20 DUP8 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F65 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1F01 DUP9 DUP3 DUP10 ADD PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F85 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1F8E DUP5 PUSH2 0x1D1F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1FAA JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1FB6 DUP8 DUP4 DUP9 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1FCB JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1FD8 DUP7 DUP3 DUP8 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1FF7 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2000 DUP6 PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x201C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2028 DUP9 DUP4 DUP10 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x203D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2049 DUP9 DUP4 DUP10 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x205E JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x206B DUP8 DUP3 DUP9 ADD PUSH2 0x1DB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2089 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2092 DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x20A6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20C3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x20CC DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x20EE JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x20F7 DUP5 PUSH2 0x1D1F JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2121 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x212A DUP6 PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2153 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x206B DUP8 DUP3 DUP9 ADD PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2171 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2188 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x219B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21A9 PUSH2 0x1D61 DUP3 PUSH2 0x23F1 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x21C9 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x21F2 JUMPI PUSH2 0x21DE DUP2 PUSH2 0x1D1F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x21CD JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x2209 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2216 DUP6 DUP3 DUP7 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2231 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x1C47 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2271 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x228A JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x22D1 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x22B5 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2314 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x22F8 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2325 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D6574614D696E744275726E5061636B656442616C616E6365 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4D6F636B3A20494E56414C49445F4D4554484F44000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x23E9 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2405 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH13 0x616E63654F6642617463683A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20554E444552464C4F JUMPI GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20494E56414C49445F4152524159535F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E5061636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH21 0x63684275726E3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20554E444552464C4F57455243313135 CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20494E56414C49445F TIMESTAMP 0x49 0x4E 0x5F JUMPI MSTORE 0x49 SLOAD GASLIMIT 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x49 0x4F 0x4E GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E5061636B PUSH6 0x6442616C616E PUSH4 0x65235F62 PUSH2 0x7463 PUSH9 0x4D696E743A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A204F564552464C4F57 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 GASPRICE 0x2E 0xD5 0xAA 0xCE 0xF9 PUSH26 0x7AF61DFA6EB571EB135F3375AD4E67A0DAEF3DF230AB7A166473 PUSH16 0x6C634300070400330000000000000000 ",
              "sourceMap": "221:2801:20:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:11465:33",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:33",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "65:147:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "75:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "97:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "84:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "84:20:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "75:5:33"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "190:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "199:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "202:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "192:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "192:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "192:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "126:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "137:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "144:42:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "133:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "133:54:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "123:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "123:65:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "116:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "116:73:33"
                              },
                              "nodeType": "YulIf",
                              "src": "113:2:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "44:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "55:5:33",
                            "type": ""
                          }
                        ],
                        "src": "14:198:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "287:622:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "336:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "345:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "352:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "338:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "338:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "338:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "315:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "323:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "311:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "311:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "330:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "307:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "307:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "300:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "300:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "297:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "369:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "396:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "383:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "383:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "373:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "412:78:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "482:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "436:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "436:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "421:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "421:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "412:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "499:16:33",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "510:5:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "503:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "531:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "538:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "524:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "524:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "524:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "554:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "564:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "558:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "577:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "588:5:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "595:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "584:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "584:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "577:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "607:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "622:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "630:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "618:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "618:15:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "611:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "692:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "701:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "704:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "694:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "694:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "694:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "656:6:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "668:6:33"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "676:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "664:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "664:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "652:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "652:28:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "682:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "648:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "648:37:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "687:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "645:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "645:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "642:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "717:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "726:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "721:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "785:118:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "806:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "824:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "811:12:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "811:17:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "799:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "799:30:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "799:30:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "842:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "853:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "858:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "849:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "849:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "842:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "874:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "885:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "890:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "881:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "881:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "874:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "747:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "750:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "744:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "744:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "758:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "760:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "769:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "772:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "765:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "765:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "760:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "740:3:33",
                                "statements": []
                              },
                              "src": "736:167:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "261:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "269:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "277:5:33",
                            "type": ""
                          }
                        ],
                        "src": "217:692:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "968:526:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1017:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1026:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1033:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1019:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1019:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1019:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "996:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1004:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "992:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "992:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1011:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "988:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "988:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "981:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "981:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "978:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1050:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1077:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1064:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1064:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1054:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1127:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "1129:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1129:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1129:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1099:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1107:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1096:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1096:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1093:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1149:126:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1185:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1193:4:33",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "1181:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1181:17:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1200:66:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "1177:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1177:90:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1269:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1173:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1173:101:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1158:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1158:117:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1149:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1291:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1298:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1284:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1284:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1284:21:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1357:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1366:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1369:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1359:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1359:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1359:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1328:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1336:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1324:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1324:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1345:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1320:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1320:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1352:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1317:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1317:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1314:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "1399:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1406:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1395:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1395:16:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1417:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1425:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1413:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1413:17:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1432:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1382:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1382:57:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1382:57:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "1463:5:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1470:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1459:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1459:18:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1479:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1455:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1455:29:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1486:1:33",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1448:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1448:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1448:40:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "942:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "950:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "958:5:33",
                            "type": ""
                          }
                        ],
                        "src": "914:580:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1586:187:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1632:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1641:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "1649:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1634:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1634:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1634:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1607:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1616:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1603:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1603:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1628:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1599:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1599:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1596:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1667:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1698:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1667:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1717:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1752:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1763:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1748:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1748:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1727:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1727:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1717:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1544:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1555:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1567:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1575:6:33",
                            "type": ""
                          }
                        ],
                        "src": "1499:274:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1975:804:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2022:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2031:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2039:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2024:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2024:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2024:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1996:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2005:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1992:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1992:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2017:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1988:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1988:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1985:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2057:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2088:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2067:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2067:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2057:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2107:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2142:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2153:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2138:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2138:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2117:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2117:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2107:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2166:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2197:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2208:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2193:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2193:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2180:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2180:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2170:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2221:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2231:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2225:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2276:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2285:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2293:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2278:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2278:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2278:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2264:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2272:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2261:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2261:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2258:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2311:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2360:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2371:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2356:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2356:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2380:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2321:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2321:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2311:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2397:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2430:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2441:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2426:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2426:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2413:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2413:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2401:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2474:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2483:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2491:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2476:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2476:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2476:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2460:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2470:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2457:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2457:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2454:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2509:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2558:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2569:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2554:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2554:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2580:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "2519:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2519:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2509:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2597:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2630:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2641:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2626:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2626:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2613:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2613:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "2601:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2675:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2684:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2692:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2677:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2677:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2677:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "2661:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2671:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2658:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2658:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2655:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2710:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2743:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "2754:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2739:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2739:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2765:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "2720:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2720:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "2710:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1909:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1920:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1932:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1940:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1948:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1956:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "1964:6:33",
                            "type": ""
                          }
                        ],
                        "src": "1778:1001:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2931:485:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2978:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2987:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "2995:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2980:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2980:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2980:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2952:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2961:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2948:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2948:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2973:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2944:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2944:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2941:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3013:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3044:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3023:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3023:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3013:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3063:50:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3098:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3109:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3094:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3094:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3073:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3073:40:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3063:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3122:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3149:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3160:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3145:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3145:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3132:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3132:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "3122:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3173:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3200:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3211:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3196:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3196:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3183:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3183:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "3173:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3224:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3255:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3266:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3251:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3251:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3238:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3238:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3228:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3314:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3323:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3331:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3316:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3316:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3316:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3286:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3294:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3283:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3280:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3349:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3382:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3393:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3378:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3378:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3402:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "3359:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3359:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "3349:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2865:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2876:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2888:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2896:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "2904:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "2912:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "2920:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2784:632:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3575:559:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3621:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3630:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3638:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3623:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3623:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3623:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3596:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3605:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3592:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3592:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3617:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3588:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3588:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3585:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3656:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3687:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3666:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3666:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3656:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3706:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3737:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3748:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3733:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3733:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3720:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3720:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "3710:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3761:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3771:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3765:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3816:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3825:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3833:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3818:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3818:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3818:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3804:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3812:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3801:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3801:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3798:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3851:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3900:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "3911:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3896:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3896:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "3920:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "3861:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3861:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3851:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3937:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3970:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3981:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3966:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3966:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3953:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3953:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3941:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4014:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4023:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4031:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4016:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4016:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4016:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4000:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4010:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3997:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3997:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3994:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4049:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4098:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4109:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4094:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4094:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4120:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4059:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4059:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4049:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3525:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3536:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3548:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3556:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3564:6:33",
                            "type": ""
                          }
                        ],
                        "src": "3421:713:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4319:744:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4366:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4375:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "4383:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4368:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4368:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4368:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4340:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4349:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4336:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4336:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4361:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4332:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4332:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4329:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4401:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4432:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4411:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4411:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4401:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4451:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4482:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4493:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4478:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4478:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4465:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4465:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4455:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4506:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4516:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4510:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4561:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4570:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "4578:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4563:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4563:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4563:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4549:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4557:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4546:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4546:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4543:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4596:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4645:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4656:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4641:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4641:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4665:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4606:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4606:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4596:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4682:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4715:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4726:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4711:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4711:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4698:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4698:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4686:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4759:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4768:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4776:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4761:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4761:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4761:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4745:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4755:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4742:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4742:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4739:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4794:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4843:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4854:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4839:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4839:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4865:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4804:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4804:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4794:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4882:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4915:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4926:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4911:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4911:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4898:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4898:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4886:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4959:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4968:6:33"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4976:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4961:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4961:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4961:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4945:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4955:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4942:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4942:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4939:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4994:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5027:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "5038:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5023:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5023:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5049:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "5004:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5004:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4994:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4261:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4272:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4284:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4292:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4300:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4308:6:33",
                            "type": ""
                          }
                        ],
                        "src": "4139:924:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5152:285:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5198:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5207:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5215:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5200:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5200:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5173:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5182:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5169:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5169:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5194:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5165:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5165:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5162:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5233:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5264:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5243:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5243:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5233:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5283:45:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5313:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5324:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5309:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5309:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5296:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5296:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5287:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5381:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5390:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "5398:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5383:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5383:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5383:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "5350:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "5371:5:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "5364:6:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5364:13:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "5357:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5357:21:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5347:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5347:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5340:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5340:40:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5337:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5416:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5426:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5416:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5110:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5121:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5133:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5141:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5068:369:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5529:179:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5575:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5584:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5592:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5577:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5577:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5577:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5550:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5559:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5546:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5546:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5571:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5542:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5542:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5539:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5610:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5641:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5620:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5620:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5610:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5660:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5687:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5698:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5683:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5683:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5670:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5670:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5660:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5487:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5498:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5510:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5518:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5442:266:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5817:230:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5863:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5872:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "5880:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5865:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5865:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5865:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5838:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5847:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5834:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5834:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5859:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5830:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5830:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5827:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5898:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5929:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5908:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5908:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5898:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5948:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5975:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5986:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5971:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5971:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5958:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5958:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5948:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5999:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6026:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6037:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6022:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6022:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6009:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6009:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5999:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5767:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5778:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5790:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5798:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5806:6:33",
                            "type": ""
                          }
                        ],
                        "src": "5713:334:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6182:425:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6229:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6238:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "6246:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6231:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6231:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6231:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6203:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6212:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6199:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6199:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6224:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6195:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6195:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6192:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6264:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6295:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6274:20:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6274:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6264:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6314:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6341:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6352:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6337:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6337:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6324:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6324:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6314:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6365:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6392:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6403:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6388:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6388:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6375:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6375:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6365:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6416:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6447:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6458:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6443:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6443:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6430:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6430:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6420:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6505:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6514:6:33"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6522:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6507:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6507:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6507:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6477:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6485:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6474:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6474:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6471:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6540:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6573:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6584:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6569:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6569:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6593:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6550:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6550:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6540:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6124:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6135:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6147:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6155:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6163:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6171:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6052:555:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6749:1109:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6795:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6804:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6812:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6797:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6797:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6797:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6770:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6779:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6766:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6766:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6791:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6762:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6762:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6759:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6830:37:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6857:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6844:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6844:23:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6834:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6876:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6886:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6880:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6931:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6940:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "6948:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6933:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6933:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6933:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6919:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6927:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6916:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6916:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6913:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6966:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6980:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6991:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6976:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6976:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6970:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7046:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7055:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7063:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7048:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7048:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7048:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7025:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7029:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7021:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7021:13:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7036:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7017:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7017:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7010:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7010:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7007:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7081:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7108:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7095:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7095:16:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "7085:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7120:80:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "7192:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "7146:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7146:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "7131:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7131:69:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "7124:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7209:16:33",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "7222:3:33"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7213:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "7241:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7246:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7234:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7234:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7234:19:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7262:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7272:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "7266:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7285:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "7296:3:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7301:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7292:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7292:12:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "7285:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7313:22:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7328:2:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7332:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7324:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7324:11:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "7317:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7394:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7403:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7411:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7396:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7396:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7396:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7358:2:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "7366:6:33"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "7374:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "7362:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7362:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7354:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7354:24:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "7380:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7350:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7350:33:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7385:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7347:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7347:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7344:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7429:15:33",
                              "value": {
                                "name": "value1",
                                "nodeType": "YulIdentifier",
                                "src": "7438:6:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "7433:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7502:126:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7523:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "7549:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_t_address",
                                            "nodeType": "YulIdentifier",
                                            "src": "7528:20:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7528:25:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7516:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7516:38:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7516:38:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7567:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "7578:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "7583:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7574:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7574:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "7567:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7599:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "7610:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "7615:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7606:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7606:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "7599:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "7464:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "7467:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7461:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7461:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "7475:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "7477:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "7486:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7489:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "7482:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7482:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "7477:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "7457:3:33",
                                "statements": []
                              },
                              "src": "7453:175:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7637:15:33",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "7647:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7637:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7661:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7694:9:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "7705:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7690:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7690:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7677:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7677:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7665:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7738:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7747:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "7755:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7740:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7740:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7740:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7724:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7734:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7721:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7721:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7718:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7773:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7822:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7833:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7818:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7818:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7844:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "7783:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7783:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7773:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6707:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6718:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6730:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6738:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6612:1246:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7932:283:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7978:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7987:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "7995:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7980:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7980:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7980:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7953:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7962:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7949:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7949:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7974:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7945:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7945:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7942:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8013:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8039:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8026:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8026:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8017:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8159:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8168:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8176:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8161:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8161:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8161:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "8071:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "8082:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8089:66:33",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8078:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8078:78:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "8068:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8068:89:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "8061:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8061:97:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8058:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8194:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8204:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8194:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7898:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7909:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7921:6:33",
                            "type": ""
                          }
                        ],
                        "src": "7863:352:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8290:120:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8336:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8345:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8353:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8338:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8338:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8338:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8311:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8320:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8307:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8307:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8332:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8303:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8303:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8300:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8371:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8394:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8381:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8381:23:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8371:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8256:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8267:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8279:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8220:190:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8502:171:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8548:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8557:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8565:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8550:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8550:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8550:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8523:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8532:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8519:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8519:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8544:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8515:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8515:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8512:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8583:33:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8606:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8593:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8593:23:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8583:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8625:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8652:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8663:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8648:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8648:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8635:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8635:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8625:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8460:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8471:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8483:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8491:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8415:258:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8829:484:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8839:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8849:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8843:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8860:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8878:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8889:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "8874:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8874:18:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8864:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8908:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8919:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8901:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8901:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8901:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8931:17:33",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "8942:6:33"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "8935:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8957:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "8977:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8971:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8971:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "8961:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9000:6:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9008:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8993:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8993:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8993:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9024:25:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9035:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9046:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9031:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9031:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "9024:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9058:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9076:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9084:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9072:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9072:15:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "9062:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9096:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "9105:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "9100:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9167:120:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "9188:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "9199:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9193:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9193:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9181:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9181:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9181:26:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9220:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "9231:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9236:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9227:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9227:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "9220:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9252:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "9266:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9274:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9262:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9262:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9252:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9129:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9132:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9126:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9126:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9140:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9142:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "9151:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9154:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9147:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9147:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "9142:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9122:3:33",
                                "statements": []
                              },
                              "src": "9118:169:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9296:11:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "9304:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9296:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8798:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8809:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "8820:4:33",
                            "type": ""
                          }
                        ],
                        "src": "8678:635:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9413:92:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9423:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9435:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9446:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9431:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9431:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "9423:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9465:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "9490:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "9483:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9483:14:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "9476:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9476:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9458:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9458:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9458:41:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9382:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9393:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9404:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9318:187:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9631:541:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9641:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9651:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9645:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9669:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9680:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9662:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9662:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9662:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9692:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "9712:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9706:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9706:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "9696:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9739:9:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9750:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9735:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9735:18:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9755:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9728:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9728:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9728:34:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9771:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "9780:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "9775:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9843:90:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9872:9:33"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9883:1:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9868:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9868:17:33"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9887:2:33",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9864:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9864:26:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value0",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "9906:6:33"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "9914:1:33"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9902:3:33"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "9902:14:33"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9918:2:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9898:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9898:23:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9892:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9892:30:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9857:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9857:66:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9857:66:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9804:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9807:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9801:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9801:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9815:19:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9817:15:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "9826:1:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "9829:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9822:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9822:10:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "9817:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9797:3:33",
                                "statements": []
                              },
                              "src": "9793:140:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9967:69:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "headStart",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9996:9:33"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10007:6:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "9992:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "9992:22:33"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "10016:2:33",
                                              "type": "",
                                              "value": "64"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "9988:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9988:31:33"
                                        },
                                        {
                                          "name": "tail",
                                          "nodeType": "YulIdentifier",
                                          "src": "10021:4:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9981:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9981:45:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9981:45:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "9948:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "9951:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9945:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9945:13:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9942:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10045:121:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10061:9:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "10080:6:33"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10088:2:33",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "10076:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10076:15:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10093:66:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "10072:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10072:88:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10057:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10057:104:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10163:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10053:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10053:113:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10045:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9600:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9611:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "9622:4:33",
                            "type": ""
                          }
                        ],
                        "src": "9510:662:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10351:242:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10368:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10379:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10361:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10361:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10361:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10402:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10413:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10398:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10398:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10418:2:33",
                                    "type": "",
                                    "value": "52"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10391:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10391:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10391:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10441:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10452:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10437:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10437:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10457:34:33",
                                    "type": "",
                                    "value": "ERC1155MetaMintBurnPackedBalance"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10430:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10430:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10430:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10512:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10523:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10508:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10508:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "10528:22:33",
                                    "type": "",
                                    "value": "Mock: INVALID_METHOD"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10501:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10501:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10501:50:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10560:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10572:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10583:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10568:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10568:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10560:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_dd3528a478237acd768e367188bd6147b1a4b40dbf3a30af8b1cf6e449468a07__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10328:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10342:4:33",
                            "type": ""
                          }
                        ],
                        "src": "10177:416:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10699:76:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10709:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10721:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10732:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10717:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10717:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10709:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10751:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10762:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10744:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10744:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10744:25:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10668:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10679:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10690:4:33",
                            "type": ""
                          }
                        ],
                        "src": "10598:177:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10909:119:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "10919:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10931:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10942:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10927:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10927:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "10919:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10961:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "10972:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10954:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10954:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10954:25:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10999:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11010:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10995:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10995:18:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11015:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10988:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10988:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10988:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10870:9:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10881:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10889:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "10900:4:33",
                            "type": ""
                          }
                        ],
                        "src": "10780:248:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11077:198:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "11087:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11103:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11097:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11097:9:33"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "11087:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11115:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11137:6:33"
                                  },
                                  {
                                    "name": "size",
                                    "nodeType": "YulIdentifier",
                                    "src": "11145:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11133:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11133:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11119:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11225:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "11227:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11227:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11227:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11168:10:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11180:18:33",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11165:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11165:34:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11204:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11216:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11201:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11201:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "11162:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11162:62:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11159:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11254:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11258:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11247:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11247:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11247:22:33"
                            }
                          ]
                        },
                        "name": "allocateMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "11057:4:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "11066:6:33",
                            "type": ""
                          }
                        ],
                        "src": "11033:242:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11355:108:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11399:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "11401:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11401:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11401:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11371:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11379:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11368:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11368:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11365:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11421:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "11437:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11445:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "11433:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11433:17:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11452:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "11429:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11429:28:33"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "11421:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_t_array$_t_address_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "11335:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "11346:4:33",
                            "type": ""
                          }
                        ],
                        "src": "11280:183:33"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_t_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_t_array$_t_uint256_$dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst := array\n        mstore(array, length)\n        let _1 := 0x20\n        dst := add(array, _1)\n        let src := add(offset, _1)\n        if gt(add(add(offset, mul(length, _1)), _1), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n    }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        array := allocateMemory(add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20))\n        mstore(array, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array, length), 0x20), 0)\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := abi_decode_t_address(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 96))\n        if gt(offset_2, _1) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(value1, value1) }\n        value1 := value\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value0, value0) }\n        value0 := abi_decode_t_address(headStart)\n        value1 := calldataload(add(headStart, 32))\n        value2 := calldataload(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        if gt(offset, 0xffffffffffffffff) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value1, value1) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value1, value1) }\n        let length := calldataload(_2)\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _3 := 0x20\n        dst := add(dst, _3)\n        let src := add(_2, _3)\n        if gt(add(add(_2, mul(length, _3)), _3), dataEnd) { revert(value1, value1) }\n        let i := value1\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_t_address(src))\n            dst := add(dst, _3)\n            src := add(src, _3)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _3))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        value0 := calldataload(headStart)\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        mstore(headStart, _1)\n        let length := mload(value0)\n        mstore(add(headStart, _1), length)\n        let i := tail\n        for { } lt(i, length) { i := add(i, _1) }\n        {\n            mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(headStart, length), 64), tail)\n        }\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n    function abi_encode_tuple_t_stringliteral_dd3528a478237acd768e367188bd6147b1a4b40dbf3a30af8b1cf6e449468a07__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 52)\n        mstore(add(headStart, 64), \"ERC1155MetaMintBurnPackedBalance\")\n        mstore(add(headStart, 96), \"Mock: INVALID_METHOD\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_array$_t_address_$dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(mul(length, 0x20), 0x20)\n    }\n}",
                  "id": 33,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100e95760003560e01c8063a3f091f51161008c578063db90e83c11610066578063db90e83c14610221578063e985e9c514610242578063eaec5f8114610255578063f242432a14610268576100e9565b8063a3f091f5146101e8578063bd7a6c41146101fb578063d7a0ad901461020e576100e9565b80632eb2c2d6116100c85780632eb2c2d61461018d578063437ecbe9146101a25780634e1273f4146101b5578063a22cb465146101d5576100e9565b8062fdd58e1461012457806301ffc9a71461014d5780630e89341c1461016d575b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011b90612359565b60405180910390fd5b6101376101323660046120b1565b61027b565b60405161014491906123b6565b60405180910390f35b61016061015b366004612220565b6102d0565b60405161014491906122dd565b61018061017b366004612260565b6102e3565b60405161014491906122e8565b6101a061019b366004611e68565b610436565b005b6101a06101b03660046120da565b610541565b6101c86101c336600461215f565b610551565b6040516101449190612299565b6101a06101e3366004612077565b6107d0565b6101a06101f636600461210c565b610869565b6101a0610209366004611f71565b61087b565b6101a061021c366004611fe2565b610886565b61023461022f366004612260565b610892565b6040516101449291906123bf565b610160610250366004611e36565b61089f565b610137610263366004612278565b6108da565b6101a0610276366004611f0e565b6108ed565b600080600061028984610892565b73ffffffffffffffffffffffffffffffffffffffff871660009081526020818152604080832085845290915290205491935091506102c790826108da565b95945050505050565b60006102db826109f1565b90505b919050565b606060026102f083610a4e565b604051602001808380546001816001161561010002031660029004801561034e5780601f1061032c57610100808354040283529182019161034e565b820191906000526020600020905b81548152906001019060200180831161033a575b5050825160208401908083835b6020831061039857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161035b565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790527f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe50181526005909201905295945050505050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061045f575061045f853361089f565b6104b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c81526020018061257e603c913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d815260200180612449603d913960400191505060405180910390fd5b61052c85858585610b7a565b61053a858585855a86610f87565b5050505050565b61054c8383836111fe565b505050565b815181516060919081146105b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806124106039913960400191505060405180910390fd5b6000806105d0856000815181106105c357fe5b6020026020010151610892565b915091506000806000886000815181106105e657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020549050600083905060608567ffffffffffffffff8111801561065a57600080fd5b50604051908082528060200260200182016040528015610684578160200160208202803683370190505b50905061069183856108da565b8160008151811061069e57fe5b602090810291909101015260015b868110156107c3576106c38982815181106105c357fe5b9096509450828614158061072c57508981815181106106de57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a600183038151811061070b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b1561079a576000808b838151811061074057fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000205493508592505b6107a484866108da565b8282815181106107b057fe5b60209081029190910101526001016106ac565b5098975050505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61087584848484611268565b50505050565b61054c8383836112dc565b61087584848484611485565b6008810491600790911690565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6020810282901c63ffffffff1692915050565b3373ffffffffffffffffffffffffffffffffffffffff861614806109165750610916853361089f565b61096b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806124b96037913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260388152602001806126746038913960400191505060405180910390fd5b6109e38585858561170f565b61053a858585855a866117b3565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c000000000000000000000000000000000000000000000000000000001415610a45575060016102de565b6102db826119a4565b606081610a8f575060408051808201909152600181527f300000000000000000000000000000000000000000000000000000000000000060208201526102de565b818060005b8215610aa857600101600a83049250610a94565b60608167ffffffffffffffff81118015610ac157600080fd5b506040519080825280601f01601f191660200182016040528015610aec576020820181803683370190505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b8315610b7057600a840660300160f81b82828060019003935081518110610b3657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a84049350610b13565b5095945050505050565b815181518114610bd5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260428152602001806124f06042913960600191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610c115750600081115b15610de357600080610c29856000815181106105c357fe5b73ffffffffffffffffffffffffffffffffffffffff8916600090815260208181526040808320858452909152812054875193955091935091610c819190849088908590610c7257fe5b60200260200101516001611a01565b73ffffffffffffffffffffffffffffffffffffffff881660009081526020818152604080832087845290915281205487519293509091610cd79190859089908590610cc857fe5b60200260200101516000611a01565b90508360015b86811015610d9157610cf48982815181106105c357fe5b9096509450818614610d635773ffffffffffffffffffffffffffffffffffffffff8b811660009081526020818152604080832086845280835281842098909855928d16825281815282822094825284815282822095909555878152948452808520549290935291909220549084905b610d7484868a8481518110610c7257fe5b9350610d8783868a8481518110610cc857fe5b9250600101610cdd565b505073ffffffffffffffffffffffffffffffffffffffff808a16600090815260208181526040808320888452825280832095909555918a16815280825283812095815294905292209190915550610e80565b60005b81811015610e7e57828181518110610dfa57fe5b6020026020010151610e1f87868481518110610e1257fe5b602002602001015161027b565b1015610e76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806125f76036913960400191505060405180910390fd5b600101610de6565b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610f2c578181015183820152602001610f14565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610f6b578181015183820152602001610f53565b5050505090500194505050505060405180910390a45050505050565b610fa68573ffffffffffffffffffffffffffffffffffffffff16611c14565b156111f65760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561105e578181015183820152602001611046565b50505050905001848103835286818151815260200191508051906020019060200280838360005b8381101561109d578181015183820152602001611085565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156110d95781810151838201526020016110c1565b50505050905090810190601f1680156111065780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561112b57600080fd5b5087f115801561113f573d6000803e3d6000fd5b50505050506040513d602081101561115657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146111f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604c815260200180612532604c913960600191505060405180910390fd5b505b505050505050565b61120b8383836001611c4e565b6040805183815260208101839052815160009273ffffffffffffffffffffffffffffffffffffffff87169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a4505050565b6112758484846000611c4e565b6040805184815260208101849052815173ffffffffffffffffffffffffffffffffffffffff87169260009233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a461087560008585855a866117b3565b815181518114611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806125ba603d913960400191505060405180910390fd5b60005b8181101561137d576113758585838151811061135257fe5b602002602001015185848151811061136657fe5b60200260200101516001611c4e565b60010161133a565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561142b578181015183820152602001611413565b50505050905001838103825284818151815260200191508051906020019060200280838360005b8381101561146a578181015183820152602001611452565b5050505090500194505050505060405180910390a450505050565b81518351146114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e8152602001806126f1603e913960400191505060405180910390fd5b8251156115ff576000806114f9856000815181106105c357fe5b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091528120548751939550919350916115429190849088908590610cc857fe5b86519091508360015b828110156115c6576115628982815181106105c357fe5b90965094508186146115ab5773ffffffffffffffffffffffffffffffffffffffff8a16600090815260208181526040808320948352939052828120949094558584529220549184905b6115bc84868a8481518110610cc857fe5b935060010161154b565b50505073ffffffffffffffffffffffffffffffffffffffff87166000908152602081815260408083209583529490529290922091909155505b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156116ac578181015183820152602001611694565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156116eb5781810151838201526020016116d3565b5050505090500194505050505060405180910390a461087560008585855a86610f87565b61171c8483836001611c4e565b6117298383836000611c4e565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051808381526020018281526020019250505060405180910390a450505050565b6117d28573ffffffffffffffffffffffffffffffffffffffff16611c14565b156111f65760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561188b578181015183820152602001611873565b50505050905090810190601f1680156118b85780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156118db57600080fd5b5087f11580156118ef573d6000803e3d6000fd5b50505050506040513d602081101561190657600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146111f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604781526020018061262d6047913960600191505060405180910390fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156119f8575060016102de565b6102db82611cd5565b60006020840263ffffffff82846001811115611a1957fe5b1415611ae75784821b8701925086831015611a7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061272f6032913960400191505060405180910390fd5b64010000000087831c8216860110611ae2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603281526020018061272f6032913960400191505060405180910390fd5b611c0a565b6001846001811115611af557fe5b1415611bb95784821b8703925086831115611b5b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806124866033913960400191505060405180910390fd5b84818389901c161015611ae2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806124866033913960400191505060405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260458152602001806126ac6045913960600191505060405180910390fd5b5050949350505050565b6000813f8015801590611c4757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b600080611c5a85610892565b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091529020549193509150611c9a90828686611a01565b73ffffffffffffffffffffffffffffffffffffffff909616600090815260208181526040808320948352939052919091209490945550505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146102de57600080fd5b600082601f830112611d53578081fd5b8135611d66611d61826123f1565b6123cd565b818152915060208083019084810181840286018201871015611d8757600080fd5b60005b84811015611da657813584529282019290820190600101611d8a565b505050505092915050565b600082601f830112611dc1578081fd5b813567ffffffffffffffff811115611dd557fe5b611e0660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123cd565b9150808252836020828501011115611e1d57600080fd5b8060208401602084013760009082016020015292915050565b60008060408385031215611e48578182fd5b611e5183611d1f565b9150611e5f60208401611d1f565b90509250929050565b600080600080600060a08688031215611e7f578081fd5b611e8886611d1f565b9450611e9660208701611d1f565b9350604086013567ffffffffffffffff80821115611eb2578283fd5b611ebe89838a01611d43565b94506060880135915080821115611ed3578283fd5b611edf89838a01611d43565b93506080880135915080821115611ef4578283fd5b50611f0188828901611db1565b9150509295509295909350565b600080600080600060a08688031215611f25578081fd5b611f2e86611d1f565b9450611f3c60208701611d1f565b93506040860135925060608601359150608086013567ffffffffffffffff811115611f65578182fd5b611f0188828901611db1565b600080600060608486031215611f85578283fd5b611f8e84611d1f565b9250602084013567ffffffffffffffff80821115611faa578384fd5b611fb687838801611d43565b93506040860135915080821115611fcb578283fd5b50611fd886828701611d43565b9150509250925092565b60008060008060808587031215611ff7578384fd5b61200085611d1f565b9350602085013567ffffffffffffffff8082111561201c578485fd5b61202888838901611d43565b9450604087013591508082111561203d578384fd5b61204988838901611d43565b9350606087013591508082111561205e578283fd5b5061206b87828801611db1565b91505092959194509250565b60008060408385031215612089578182fd5b61209283611d1f565b9150602083013580151581146120a6578182fd5b809150509250929050565b600080604083850312156120c3578182fd5b6120cc83611d1f565b946020939093013593505050565b6000806000606084860312156120ee578283fd5b6120f784611d1f565b95602085013595506040909401359392505050565b60008060008060808587031215612121578384fd5b61212a85611d1f565b93506020850135925060408501359150606085013567ffffffffffffffff811115612153578182fd5b61206b87828801611db1565b60008060408385031215612171578081fd5b823567ffffffffffffffff80821115612188578283fd5b818501915085601f83011261219b578283fd5b81356121a9611d61826123f1565b80828252602080830192508086018a8283870289010111156121c9578788fd5b8796505b848710156121f2576121de81611d1f565b8452600196909601959281019281016121cd565b509096508701359350505080821115612209578283fd5b5061221685828601611d43565b9150509250929050565b600060208284031215612231578081fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611c47578182fd5b600060208284031215612271578081fd5b5035919050565b6000806040838503121561228a578182fd5b50508035926020909101359150565b6020808252825182820181905260009190848201906040850190845b818110156122d1578351835292840192918401916001016122b5565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b81811015612314578581018301518582016040015282016122f8565b818111156123255783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526034908201527f455243313135354d6574614d696e744275726e5061636b656442616c616e636560408201527f4d6f636b3a20494e56414c49445f4d4554484f44000000000000000000000000606082015260800190565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff811182821017156123e957fe5b604052919050565b600067ffffffffffffffff82111561240557fe5b506020908102019056fe455243313135355061636b656442616c616e63652362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e475448455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20554e444552464c4f57455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135354d696e744275726e5061636b656442616c616e63652362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20554e444552464c4f57455243313135355061636b656442616c616e6365235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20494e56414c49445f42494e5f57524954455f4f5045524154494f4e455243313135354d696e744275726e5061636b656442616c616e6365235f62617463684d696e743a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a204f564552464c4f57a2646970667358221220213a2ed5aacef9797af61dfa6eb571eb135f3375ad4e67a0daef3df230ab7a1664736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE9 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3F091F5 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xDB90E83C GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xDB90E83C EQ PUSH2 0x221 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xEAEC5F81 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x268 JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH4 0xA3F091F5 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0xBD7A6C41 EQ PUSH2 0x1FB JUMPI DUP1 PUSH4 0xD7A0AD90 EQ PUSH2 0x20E JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x437ECBE9 EQ PUSH2 0x1A2 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x1D5 JUMPI PUSH2 0xE9 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x124 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x14D JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x16D JUMPI JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11B SWAP1 PUSH2 0x2359 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x137 PUSH2 0x132 CALLDATASIZE PUSH1 0x4 PUSH2 0x20B1 JUMP JUMPDEST PUSH2 0x27B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x23B6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x160 PUSH2 0x15B CALLDATASIZE PUSH1 0x4 PUSH2 0x2220 JUMP JUMPDEST PUSH2 0x2D0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x22DD JUMP JUMPDEST PUSH2 0x180 PUSH2 0x17B CALLDATASIZE PUSH1 0x4 PUSH2 0x2260 JUMP JUMPDEST PUSH2 0x2E3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x22E8 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x19B CALLDATASIZE PUSH1 0x4 PUSH2 0x1E68 JUMP JUMPDEST PUSH2 0x436 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A0 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x20DA JUMP JUMPDEST PUSH2 0x541 JUMP JUMPDEST PUSH2 0x1C8 PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x215F JUMP JUMPDEST PUSH2 0x551 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP2 SWAP1 PUSH2 0x2299 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x1E3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2077 JUMP JUMPDEST PUSH2 0x7D0 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x210C JUMP JUMPDEST PUSH2 0x869 JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x209 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F71 JUMP JUMPDEST PUSH2 0x87B JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x21C CALLDATASIZE PUSH1 0x4 PUSH2 0x1FE2 JUMP JUMPDEST PUSH2 0x886 JUMP JUMPDEST PUSH2 0x234 PUSH2 0x22F CALLDATASIZE PUSH1 0x4 PUSH2 0x2260 JUMP JUMPDEST PUSH2 0x892 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x144 SWAP3 SWAP2 SWAP1 PUSH2 0x23BF JUMP JUMPDEST PUSH2 0x160 PUSH2 0x250 CALLDATASIZE PUSH1 0x4 PUSH2 0x1E36 JUMP JUMPDEST PUSH2 0x89F JUMP JUMPDEST PUSH2 0x137 PUSH2 0x263 CALLDATASIZE PUSH1 0x4 PUSH2 0x2278 JUMP JUMPDEST PUSH2 0x8DA JUMP JUMPDEST PUSH2 0x1A0 PUSH2 0x276 CALLDATASIZE PUSH1 0x4 PUSH2 0x1F0E JUMP JUMPDEST PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x289 DUP5 PUSH2 0x892 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x2C7 SWAP1 DUP3 PUSH2 0x8DA JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DB DUP3 PUSH2 0x9F1 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 PUSH2 0x2F0 DUP4 PUSH2 0xA4E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x34E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x32C JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x34E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x33A JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x398 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x35B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x2E6A736F6E000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 ADD DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP3 ADD SWAP1 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x45F JUMPI POP PUSH2 0x45F DUP6 CALLER PUSH2 0x89F JUMP JUMPDEST PUSH2 0x4B4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x257E PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x520 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2449 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x52C DUP6 DUP6 DUP6 DUP6 PUSH2 0xB7A JUMP JUMPDEST PUSH2 0x53A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xF87 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH2 0x54C DUP4 DUP4 DUP4 PUSH2 0x11FE JUMP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 SWAP1 DUP2 EQ PUSH2 0x5B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2410 PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x5D0 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x892 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5E6 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP4 SWAP1 POP PUSH1 0x60 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x65A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x684 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x691 DUP4 DUP6 PUSH2 0x8DA JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x69E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x7C3 JUMPI PUSH2 0x6C3 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP3 DUP7 EQ ISZERO DUP1 PUSH2 0x72C JUMPI POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x6DE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x70B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x79A JUMPI PUSH1 0x0 DUP1 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x740 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP4 POP DUP6 SWAP3 POP JUMPDEST PUSH2 0x7A4 DUP5 DUP7 PUSH2 0x8DA JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x7B0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x6AC JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x875 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1268 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x54C DUP4 DUP4 DUP4 PUSH2 0x12DC JUMP JUMPDEST PUSH2 0x875 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1485 JUMP JUMPDEST PUSH1 0x8 DUP2 DIV SWAP2 PUSH1 0x7 SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL DUP3 SWAP1 SHR PUSH4 0xFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x916 JUMPI POP PUSH2 0x916 DUP6 CALLER PUSH2 0x89F JUMP JUMPDEST PUSH2 0x96B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24B9 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x9D7 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2674 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9E3 DUP6 DUP6 DUP6 DUP6 PUSH2 0x170F JUMP JUMPDEST PUSH2 0x53A DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x17B3 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0xA45 JUMPI POP PUSH1 0x1 PUSH2 0x2DE JUMP JUMPDEST PUSH2 0x2DB DUP3 PUSH2 0x19A4 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xA8F JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x2DE JUMP JUMPDEST DUP2 DUP1 PUSH1 0x0 JUMPDEST DUP3 ISZERO PUSH2 0xAA8 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP4 DIV SWAP3 POP PUSH2 0xA94 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xAC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xAEC JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0xB70 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0xB36 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0xB13 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0xBD5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x24F0 PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xC11 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xDE3 JUMPI PUSH1 0x0 DUP1 PUSH2 0xC29 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0xC81 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xC72 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1A01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0xCD7 SWAP2 SWAP1 DUP6 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH2 0xCC8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH2 0x1A01 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xD91 JUMPI PUSH2 0xCF4 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0xD63 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SWAP9 SWAP1 SWAP9 SSTORE SWAP3 DUP14 AND DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP5 DUP3 MSTORE DUP5 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP8 DUP2 MSTORE SWAP5 DUP5 MSTORE DUP1 DUP6 KECCAK256 SLOAD SWAP3 SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 SLOAD SWAP1 DUP5 SWAP1 JUMPDEST PUSH2 0xD74 DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC72 JUMPI INVALID JUMPDEST SWAP4 POP PUSH2 0xD87 DUP4 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCC8 JUMPI INVALID JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xCDD JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP2 DUP11 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP4 DUP2 KECCAK256 SWAP6 DUP2 MSTORE SWAP5 SWAP1 MSTORE SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP PUSH2 0xE80 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xE7E JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xDFA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xE1F DUP8 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE12 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x27B JUMP JUMPDEST LT ISZERO PUSH2 0xE76 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x25F7 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0xDE6 JUMP JUMPDEST POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF2C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF14 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF6B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF53 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xFA6 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST ISZERO PUSH2 0x11F6 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x105E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1046 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x109D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1085 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10D9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10C1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1106 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x112B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x113F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2532 PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x120B DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP4 SWAP1 MSTORE DUP2 MLOAD PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH2 0x1275 DUP5 DUP5 DUP5 PUSH1 0x0 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND SWAP3 PUSH1 0x0 SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 PUSH2 0x875 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x17B3 JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0x1337 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x25BA PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x137D JUMPI PUSH2 0x1375 DUP6 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1352 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1366 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x133A JUMP JUMPDEST POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x142B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1413 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x146A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1452 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x14DF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26F1 PUSH1 0x3E SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x15FF JUMPI PUSH1 0x0 DUP1 PUSH2 0x14F9 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0x1542 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xCC8 JUMPI INVALID JUMPDEST DUP7 MLOAD SWAP1 SWAP2 POP DUP4 PUSH1 0x1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x15C6 JUMPI PUSH2 0x1562 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x5C3 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0x15AB JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE DUP3 DUP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP6 DUP5 MSTORE SWAP3 KECCAK256 SLOAD SWAP2 DUP5 SWAP1 JUMPDEST PUSH2 0x15BC DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCC8 JUMPI INVALID JUMPDEST SWAP4 POP PUSH1 0x1 ADD PUSH2 0x154B JUMP JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP6 DUP4 MSTORE SWAP5 SWAP1 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1694 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x875 PUSH1 0x0 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xF87 JUMP JUMPDEST PUSH2 0x171C DUP5 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1C4E JUMP JUMPDEST PUSH2 0x1729 DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1C4E JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x17D2 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1C14 JUMP JUMPDEST ISZERO PUSH2 0x11F6 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x188B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1873 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x18B8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x18DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x18EF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1906 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x11F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x262D PUSH1 0x47 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x19F8 JUMPI POP PUSH1 0x1 PUSH2 0x2DE JUMP JUMPDEST PUSH2 0x2DB DUP3 PUSH2 0x1CD5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP5 MUL PUSH4 0xFFFFFFFF DUP3 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1A19 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1AE7 JUMPI DUP5 DUP3 SHL DUP8 ADD SWAP3 POP DUP7 DUP4 LT ISZERO PUSH2 0x1A7F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x272F PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH5 0x100000000 DUP8 DUP4 SHR DUP3 AND DUP7 ADD LT PUSH2 0x1AE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x272F PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1C0A JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1AF5 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1BB9 JUMPI DUP5 DUP3 SHL DUP8 SUB SWAP3 POP DUP7 DUP4 GT ISZERO PUSH2 0x1B5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2486 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 DUP2 DUP4 DUP10 SWAP1 SHR AND LT ISZERO PUSH2 0x1AE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2486 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x26AC PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1C47 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 EQ ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1C5A DUP6 PUSH2 0x892 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x1C9A SWAP1 DUP3 DUP7 DUP7 PUSH2 0x1A01 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1D53 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1D66 PUSH2 0x1D61 DUP3 PUSH2 0x23F1 JUMP JUMPDEST PUSH2 0x23CD JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x1D87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x1DA6 JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x1D8A JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x1DC1 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1DD5 JUMPI INVALID JUMPDEST PUSH2 0x1E06 PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x23CD JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1E1D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x1E48 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1E51 DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP2 POP PUSH2 0x1E5F PUSH1 0x20 DUP5 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1E7F JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1E88 DUP7 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 POP PUSH2 0x1E96 PUSH1 0x20 DUP8 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1EB2 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1EBE DUP10 DUP4 DUP11 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1ED3 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1EDF DUP10 DUP4 DUP11 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1EF4 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1F01 DUP9 DUP3 DUP10 ADD PUSH2 0x1DB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1F25 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0x1F2E DUP7 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 POP PUSH2 0x1F3C PUSH1 0x20 DUP8 ADD PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1F65 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1F01 DUP9 DUP3 DUP10 ADD PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1F85 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x1F8E DUP5 PUSH2 0x1D1F JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x1FAA JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x1FB6 DUP8 DUP4 DUP9 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1FCB JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x1FD8 DUP7 DUP3 DUP8 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x1FF7 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2000 DUP6 PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x201C JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x2028 DUP9 DUP4 DUP10 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x203D JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2049 DUP9 DUP4 DUP10 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x205E JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x206B DUP8 DUP3 DUP9 ADD PUSH2 0x1DB1 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2089 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2092 DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x20A6 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x20C3 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x20CC DUP4 PUSH2 0x1D1F JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x20EE JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x20F7 DUP5 PUSH2 0x1D1F JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x2121 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x212A DUP6 PUSH2 0x1D1F JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2153 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x206B DUP8 DUP3 DUP9 ADD PUSH2 0x1DB1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2171 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2188 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x219B JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21A9 PUSH2 0x1D61 DUP3 PUSH2 0x23F1 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x21C9 JUMPI DUP8 DUP9 REVERT JUMPDEST DUP8 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x21F2 JUMPI PUSH2 0x21DE DUP2 PUSH2 0x1D1F JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x21CD JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x2209 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2216 DUP6 DUP3 DUP7 ADD PUSH2 0x1D43 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2231 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x1C47 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2271 JUMPI DUP1 DUP2 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x228A JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x22D1 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x22B5 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 DUP3 DUP6 ADD MSTORE DUP3 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2314 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x22F8 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x2325 JUMPI DUP4 PUSH1 0x40 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x40 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x34 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D6574614D696E744275726E5061636B656442616C616E6365 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4D6F636B3A20494E56414C49445F4D4554484F44000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x23E9 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2405 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH13 0x616E63654F6642617463683A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20554E444552464C4F JUMPI GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20494E56414C49445F4152524159535F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E5061636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH21 0x63684275726E3A20494E56414C49445F4152524159 MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20554E444552464C4F57455243313135 CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20494E56414C49445F TIMESTAMP 0x49 0x4E 0x5F JUMPI MSTORE 0x49 SLOAD GASLIMIT 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x49 0x4F 0x4E GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x4D PUSH10 0x6E744275726E5061636B PUSH6 0x6442616C616E PUSH4 0x65235F62 PUSH2 0x7463 PUSH9 0x4D696E743A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A204F564552464C4F57 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x21 GASPRICE 0x2E 0xD5 0xAA 0xCE 0xF9 PUSH26 0x7AF61DFA6EB571EB135F3375AD4E67A0DAEF3DF230AB7A166473 PUSH16 0x6C634300070400330000000000000000 ",
              "sourceMap": "221:2801:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2953:62;;;;;;;;;;:::i;:::-;;;;;;;;9699:261:26;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;884:198:20;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;840:155:23:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3444:547:26:-;;;;;;:::i;:::-;;:::i;:::-;;2330:111:20;;;;;;:::i;:::-;;:::i;10318:1013:26:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8707:230::-;;;;;;:::i;:::-;;:::i;1448:134:20:-;;;;;;:::i;:::-;;:::i;2657:143::-;;;;;;:::i;:::-;;:::i;1847:166::-;;;;;;:::i;:::-;;:::i;14001:189:26:-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;9199:160::-;;;;;;:::i;:::-;;:::i;14447:432::-;;;;;;:::i;:::-;;:::i;2360:598::-;;;;;;:::i;:::-;;:::i;9699:261::-;9781:7;9798:11;9815:13;9881:18;9895:3;9881:13;:18::i;:::-;9926:16;;;:8;:16;;;;;;;;;;;:21;;;;;;;;;9866:33;;-1:-1:-1;9866:33:26;-1:-1:-1;9912:43:26;;9866:33;9912:13;:43::i;:::-;9905:50;9699:261;-1:-1:-1;;;;;9699:261:26:o;884:198:20:-;1021:4;1040:37;1064:12;1040:23;:37::i;:::-;1033:44;;884:198;;;;:::o;840:155:23:-;896:13;948:15;965:14;975:3;965:9;:14::i;:::-;931:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;931:58:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;931:58:23;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;840:155:23:o;3444:547:26:-;3630:10;:19;;;;;3629:60;;;3654:35;3671:5;3678:10;3654:16;:35::i;:::-;3621:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3768:17;;;3760:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3857:50;3880:5;3887:3;3892:4;3898:8;3857:22;:50::i;:::-;3913:73;3941:5;3948:3;3953:4;3959:8;3969:9;3980:5;3913:27;:73::i;:::-;3444:547;;;;;:::o;2330:111:20:-;2411:25;2417:5;2424:3;2429:6;2411:5;:25::i;:::-;2330:111;;;:::o;10318:1013:26:-;10470:14;;10510:11;;10425:16;;10470:14;10498:23;;10490:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10611:11;10624:13;10641:22;10655:4;10660:1;10655:7;;;;;;;;;;;;;;10641:13;:22::i;:::-;10610:53;;;;10669:19;10691:8;:20;10700:7;10708:1;10700:10;;;;;;;;;;;;;;10691:20;;;;;;;;;;;;;;;:25;10712:3;10691:25;;;;;;;;;;;;10669:47;;10722:16;10741:3;10722:22;;10773:30;10820:8;10806:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10806:23:26;;10773:56;;10854:33;10868:11;10881:5;10854:13;:33::i;:::-;10835:13;10849:1;10835:16;;;;;;;;;;;;;;;;;:52;10955:1;10938:362;10962:8;10958:1;:12;10938:362;;;11000:22;11014:4;11019:1;11014:7;;;;;;;11000:22;10985:37;;-1:-1:-1;10985:37:26;-1:-1:-1;11104:15:26;;;;;:45;;;11139:7;11147:1;11139:10;;;;;;;;;;;;;;11123:26;;:7;11133:1;11131;:3;11123:12;;;;;;;;;;;;;;:26;;;;11104:45;11100:133;;;11175:8;:20;11184:7;11192:1;11184:10;;;;;;;;;;;;;;11175:20;;;;;;;;;;;;;;;:25;11196:3;11175:25;;;;;;;;;;;;11161:39;;11221:3;11210:14;;11100:133;11260:33;11274:11;11287:5;11260:13;:33::i;:::-;11241:13;11255:1;11241:16;;;;;;;;;;;;;;;;;:52;10972:3;;10938:362;;;-1:-1:-1;11313:13:26;10318:1013;-1:-1:-1;;;;;;;;10318:1013:26:o;8707:230::-;8839:10;8829:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;8884:48;;;;;;;8829:32;;8839:10;8884:48;;;;;;;;;;;8707:230;;:::o;1448:134:20:-;1547:30;1553:3;1558;1563:6;1571:5;1547;:30::i;:::-;1448:134;;;;:::o;2657:143::-;2763:32;2774:5;2781:4;2787:7;2763:10;:32::i;1847:166::-;1971:37;1982:3;1987:4;1993:7;2002:5;1971:10;:37::i;14001:189:26:-;1505:19;14104:21;;;14139;;;;;14001:189::o;9199:160::-;9326:17;;;;9294:15;9326:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;9199:160::o;14447:432::-;1395:2;14806:22;;14842:24;;;14725:33;14841;14447:432;;;;:::o;2360:598::-;2521:10;:19;;;;;2520:60;;;2545:35;2562:5;2569:10;2545:16;:35::i;:::-;2512:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:17;;;2646:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2838:43;2856:5;2863:3;2868;2873:7;2838:17;:43::i;:::-;2887:66;2910:5;2917:3;2922;2927:7;2936:9;2947:5;2887:22;:66::i;2054:234:23:-;2140:4;2156:50;;;2172:34;2156:50;2152:82;;;-1:-1:-1;2223:4:23;2216:11;;2152:82;2246:37;2270:12;2246:23;:37::i;2518:513::-;2572:27;2611:7;2607:38;;-1:-1:-1;2628:10:23;;;;;;;;;;;;;;;;;;;2607:38;2663:2;;2651:9;2737:50;2744:6;;2737:50;;2760:5;;2778:2;2773:7;;;;2737:50;;;2793:17;2823:3;2813:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2813:14:23;-1:-1:-1;2793:34:23;-1:-1:-1;2845:7:23;;;2892:84;2899:7;;2892:84;;2949:2;2944;:7;2939:2;:12;2928:25;;2916:4;2921:3;;;;;;;2916:9;;;;;;;;;;;:37;;;;;;;;;;-1:-1:-1;2967:2:23;2961:8;;;;2892:84;;;-1:-1:-1;3021:4:23;2518:513;-1:-1:-1;;;;;2518:513:23:o;5742:1939:26:-;5893:11;;5964:15;;5951:28;;5943:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6070:3;6061:12;;:5;:12;;;;:29;;;;;6089:1;6077:9;:13;6061:29;6057:1537;;;6169:11;6182:13;6199:22;6213:4;6218:1;6213:7;;;;;;;6199:22;6345:15;;;6307;6345;;;;;;;;;;;:20;;;;;;;;;6374:11;;6168:53;;-1:-1:-1;6168:53:26;;-1:-1:-1;6307:15:26;6325:77;;6345:20;6168:53;;6374:8;;6307:15;;6374:11;;;;;;;;;;6387:14;6325:19;:77::i;:::-;6446:13;;;6410;6446;;;;;;;;;;;:18;;;;;;;;;6473:11;;6307:95;;-1:-1:-1;6410:13:26;;6426:75;;6446:18;6466:5;;6473:8;;6410:13;;6473:11;;;;;;;;;;6486:14;6426:19;:75::i;:::-;6410:91;-1:-1:-1;6554:3:26;6583:1;6566:649;6590:9;6586:1;:13;6566:649;;;6631:22;6645:4;6650:1;6645:7;;;;;;;6631:22;6616:37;;-1:-1:-1;6616:37:26;-1:-1:-1;6690:14:26;;;6686:323;;6770:15;;;;:8;:15;;;;;;;;;;;:24;;;;;;;;;:34;;;;6816:13;;;;;;;;;;;:22;;;;;;;;;:30;;;;6869:20;;;;;;;;;;6909:18;;;;;;;;;;6869:20;;6686:323;7062:64;7082:7;7091:5;7098:8;7107:1;7098:11;;;;;;;7062:64;7052:74;;7144:62;7164:5;7171;7178:8;7187:1;7178:11;;;;;;;7144:62;7136:70;-1:-1:-1;6601:3:26;;6566:649;;;-1:-1:-1;;7271:15:26;;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:30;;;;7309:13;;;;;;;;;;;:18;;;;;;;;:26;;;;-1:-1:-1;6057:1537:26;;;7427:9;7422:166;7446:9;7442:1;:13;7422:166;;;7509:8;7518:1;7509:11;;;;;;;;;;;;;;7480:25;7490:5;7497:4;7502:1;7497:7;;;;;;;;;;;;;;7480:9;:25::i;:::-;:40;;7472:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7457:3;;7422:166;;;;6057:1537;7656:3;7623:53;;7649:5;7623:53;;7637:10;7623:53;;;7661:4;7667:8;7623:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5742:1939;;;;;:::o;7794:516::-;8015:16;:3;:14;;;:16::i;:::-;8011:295;;;8041:13;8079:3;8057:49;;;8112:9;8123:10;8135:5;8142:4;8148:8;8158:5;8057:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8057:107:26;;-1:-1:-1;8180:38:26;;;8190:28;8180:38;8172:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8011:295;;7794:516;;;;;;:::o;3306:255:25:-;3412:53;3429:5;3436:3;3441:7;3450:14;3412:16;:53::i;:::-;3495:61;;;;;;;;;;;;;;3537:3;;3495:61;;;;3510:10;;3495:61;;;;;;;;;;;3306:255;;;:::o;727:428::-;844:53;861:3;868;873:7;882:14;844:16;:53::i;:::-;954:59;;;;;;;;;;;;;;;;;;989:3;;969:10;;954:59;;;;;;;;;;;1077:73;1108:3;1114;1119;1124:7;1133:9;1144:5;1077:22;:73::i;4124:589::-;4282:11;;4316:15;;4307:24;;4299:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4438:9;4433:173;4457:5;4453:1;:9;4433:173;;;4509:63;4526:5;4535:4;4540:1;4535:7;;;;;;;;;;;;;;4544:8;4553:1;4544:11;;;;;;;;;;;;;;4557:14;4509:16;:63::i;:::-;4464:3;;4433:173;;;;4687:3;4646:62;;4672:5;4646:62;;4660:10;4646:62;;;4693:4;4699:8;4646:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:589;;;;:::o;1449:1512::-;1596:8;:15;1581:4;:11;:30;1573:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1689:11;;:15;1685:1036;;1783:11;1796:13;1813:22;1827:4;1832:1;1827:7;;;;;;;1813:22;1957:13;;;1921;1957;;;;;;;;;;;:18;;;;;;;;;1984:11;;1782:53;;-1:-1:-1;1782:53:25;;-1:-1:-1;1921:13:25;1937:75;;1957:18;1782:53;;1984:8;;1921:13;;1984:11;;;1937:75;2080:11;;1921:91;;-1:-1:-1;2144:3:25;2173:1;2156:476;2180:9;2176:1;:13;2156:476;;;2221:22;2235:4;2240:1;2235:7;;;;;;;2221:22;2206:37;;-1:-1:-1;2206:37:25;-1:-1:-1;2280:14:25;;;2276:234;;2360:13;;;:8;:13;;;;;;;;;;;:22;;;;;;;;;:30;;;;2410:18;;;;;;;;;2276:234;2561:62;2581:5;2588;2595:8;2604:1;2595:11;;;;;;;2561:62;2553:70;-1:-1:-1;2191:3:25;;2156:476;;;-1:-1:-1;;;2688:13:25;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;;:26;;;;-1:-1:-1;1685:1036:25;2792:3;2752:60;;2786:3;2752:60;;2766:10;2752:60;;;2797:4;2803:8;2752:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2876:80;2912:3;2918;2923:4;2929:8;2939:9;2950:5;2876:27;:80::i;4381:385:26:-;4509:53;4526:5;4533:3;4538:7;4547:14;4509:16;:53::i;:::-;4599;4616:3;4623;4628:7;4637:14;4599:16;:53::i;:::-;4743:3;4709:52;;4736:5;4709:52;;4724:10;4709:52;;;4748:3;4753:7;4709:52;;;;;;;;;;;;;;;;;;;;;;;;4381:385;;;;:::o;4874:468::-;5066:16;:3;:14;;;:16::i;:::-;5062:276;;;5092:13;5130:3;5108:44;;;5157:9;5168:10;5180:5;5187:3;5192:7;5201:5;5108:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5108:99:26;;-1:-1:-1;5223:32:26;;;5233:22;5223:32;5215:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15216:226;15302:4;15318:42;;;15334:26;15318:42;15314:74;;;-1:-1:-1;15377:4:26;15370:11;;15314:74;15400:37;15424:12;15400:23;:37::i;12664:1162::-;12796:20;1395:2;12842:22;;12885:33;12796:20;12929:10;:28;;;;;;;;;12925:871;;;12996:16;;;12982:31;;;-1:-1:-1;13029:26:26;;;;13021:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13178:16;13137:19;;;13136:28;;13135:40;;:59;13118:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12925:871;;;13331:14;13317:10;:28;;;;;;;;;13313:483;;;13384:16;;;13370:31;;;-1:-1:-1;13417:26:26;;;;13409:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13558:7;13549:4;13540:5;13526:10;:19;;13525:28;13524:41;;13507:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13313:483;13693:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13313:483;13802:19;;12664:1162;;;;;;:::o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;890:43;882:52;541:398;-1:-1:-1;;;541:398:27:o;11845:352:26:-;11963:11;11980:13;12047:18;12061:3;12047:13;:18::i;:::-;12140;;;:8;:18;;;;;;;;;;;:23;;;;;;;;;12032:33;;-1:-1:-1;12032:33:26;-1:-1:-1;12120:72:26;;12032:33;12172:7;12181:10;12120:19;:72::i;:::-;12094:18;;;;:8;:18;;;;;;;;;;;:23;;;;;;;;;;:98;;;;-1:-1:-1;;;;11845:352:26:o;259:148:28:-;355:47;;;371:31;355:47;259:148;;;:::o;14:198:33:-;84:20;;144:42;133:54;;123:65;;113:2;;202:1;199;192:12;217:692;;330:3;323:4;315:6;311:17;307:27;297:2;;352:5;345;338:20;297:2;396:6;383:20;421:69;436:53;482:6;436:53;:::i;:::-;421:69;:::i;:::-;524:21;;;412:78;-1:-1:-1;564:4:33;584:14;;;;618:15;;;664;;;652:28;;648:37;;645:46;-1:-1:-1;642:2:33;;;704:1;701;694:12;642:2;726:1;736:167;750:6;747:1;744:13;736:167;;;811:17;;799:30;;849:12;;;;881;;;;772:1;765:9;736:167;;;740:3;;;;;287:622;;;;:::o;914:580::-;;1011:3;1004:4;996:6;992:17;988:27;978:2;;1033:5;1026;1019:20;978:2;1077:6;1064:20;1107:18;1099:6;1096:30;1093:2;;;1129:9;1093:2;1158:117;1269:4;1200:66;1193:4;1185:6;1181:17;1177:90;1173:101;1158:117;:::i;:::-;1149:126;;1298:6;1291:5;1284:21;1352:3;1345:4;1336:6;1328;1324:19;1320:30;1317:39;1314:2;;;1369:1;1366;1359:12;1314:2;1432:6;1425:4;1417:6;1413:17;1406:4;1399:5;1395:16;1382:57;1486:1;1459:18;;;1479:4;1455:29;1448:40;1463:5;968:526;-1:-1:-1;;968:526:33:o;1499:274::-;;;1628:2;1616:9;1607:7;1603:23;1599:32;1596:2;;;1649:6;1641;1634:22;1596:2;1677:31;1698:9;1677:31;:::i;:::-;1667:41;;1727:40;1763:2;1752:9;1748:18;1727:40;:::i;:::-;1717:50;;1586:187;;;;;:::o;1778:1001::-;;;;;;2017:3;2005:9;1996:7;1992:23;1988:33;1985:2;;;2039:6;2031;2024:22;1985:2;2067:31;2088:9;2067:31;:::i;:::-;2057:41;;2117:40;2153:2;2142:9;2138:18;2117:40;:::i;:::-;2107:50;;2208:2;2197:9;2193:18;2180:32;2231:18;2272:2;2264:6;2261:14;2258:2;;;2293:6;2285;2278:22;2258:2;2321:67;2380:7;2371:6;2360:9;2356:22;2321:67;:::i;:::-;2311:77;;2441:2;2430:9;2426:18;2413:32;2397:48;;2470:2;2460:8;2457:16;2454:2;;;2491:6;2483;2476:22;2454:2;2519:69;2580:7;2569:8;2558:9;2554:24;2519:69;:::i;:::-;2509:79;;2641:3;2630:9;2626:19;2613:33;2597:49;;2671:2;2661:8;2658:16;2655:2;;;2692:6;2684;2677:22;2655:2;;2720:53;2765:7;2754:8;2743:9;2739:24;2720:53;:::i;:::-;2710:63;;;1975:804;;;;;;;;:::o;2784:632::-;;;;;;2973:3;2961:9;2952:7;2948:23;2944:33;2941:2;;;2995:6;2987;2980:22;2941:2;3023:31;3044:9;3023:31;:::i;:::-;3013:41;;3073:40;3109:2;3098:9;3094:18;3073:40;:::i;:::-;3063:50;;3160:2;3149:9;3145:18;3132:32;3122:42;;3211:2;3200:9;3196:18;3183:32;3173:42;;3266:3;3255:9;3251:19;3238:33;3294:18;3286:6;3283:30;3280:2;;;3331:6;3323;3316:22;3280:2;3359:51;3402:7;3393:6;3382:9;3378:22;3359:51;:::i;3421:713::-;;;;3617:2;3605:9;3596:7;3592:23;3588:32;3585:2;;;3638:6;3630;3623:22;3585:2;3666:31;3687:9;3666:31;:::i;:::-;3656:41;;3748:2;3737:9;3733:18;3720:32;3771:18;3812:2;3804:6;3801:14;3798:2;;;3833:6;3825;3818:22;3798:2;3861:67;3920:7;3911:6;3900:9;3896:22;3861:67;:::i;:::-;3851:77;;3981:2;3970:9;3966:18;3953:32;3937:48;;4010:2;4000:8;3997:16;3994:2;;;4031:6;4023;4016:22;3994:2;;4059:69;4120:7;4109:8;4098:9;4094:24;4059:69;:::i;:::-;4049:79;;;3575:559;;;;;:::o;4139:924::-;;;;;4361:3;4349:9;4340:7;4336:23;4332:33;4329:2;;;4383:6;4375;4368:22;4329:2;4411:31;4432:9;4411:31;:::i;:::-;4401:41;;4493:2;4482:9;4478:18;4465:32;4516:18;4557:2;4549:6;4546:14;4543:2;;;4578:6;4570;4563:22;4543:2;4606:67;4665:7;4656:6;4645:9;4641:22;4606:67;:::i;:::-;4596:77;;4726:2;4715:9;4711:18;4698:32;4682:48;;4755:2;4745:8;4742:16;4739:2;;;4776:6;4768;4761:22;4739:2;4804:69;4865:7;4854:8;4843:9;4839:24;4804:69;:::i;:::-;4794:79;;4926:2;4915:9;4911:18;4898:32;4882:48;;4955:2;4945:8;4942:16;4939:2;;;4976:6;4968;4961:22;4939:2;;5004:53;5049:7;5038:8;5027:9;5023:24;5004:53;:::i;:::-;4994:63;;;4319:744;;;;;;;:::o;5068:369::-;;;5194:2;5182:9;5173:7;5169:23;5165:32;5162:2;;;5215:6;5207;5200:22;5162:2;5243:31;5264:9;5243:31;:::i;:::-;5233:41;;5324:2;5313:9;5309:18;5296:32;5371:5;5364:13;5357:21;5350:5;5347:32;5337:2;;5398:6;5390;5383:22;5337:2;5426:5;5416:15;;;5152:285;;;;;:::o;5442:266::-;;;5571:2;5559:9;5550:7;5546:23;5542:32;5539:2;;;5592:6;5584;5577:22;5539:2;5620:31;5641:9;5620:31;:::i;:::-;5610:41;5698:2;5683:18;;;;5670:32;;-1:-1:-1;;;5529:179:33:o;5713:334::-;;;;5859:2;5847:9;5838:7;5834:23;5830:32;5827:2;;;5880:6;5872;5865:22;5827:2;5908:31;5929:9;5908:31;:::i;:::-;5898:41;5986:2;5971:18;;5958:32;;-1:-1:-1;6037:2:33;6022:18;;;6009:32;;5817:230;-1:-1:-1;;;5817:230:33:o;6052:555::-;;;;;6224:3;6212:9;6203:7;6199:23;6195:33;6192:2;;;6246:6;6238;6231:22;6192:2;6274:31;6295:9;6274:31;:::i;:::-;6264:41;;6352:2;6341:9;6337:18;6324:32;6314:42;;6403:2;6392:9;6388:18;6375:32;6365:42;;6458:2;6447:9;6443:18;6430:32;6485:18;6477:6;6474:30;6471:2;;;6522:6;6514;6507:22;6471:2;6550:51;6593:7;6584:6;6573:9;6569:22;6550:51;:::i;6612:1246::-;;;6791:2;6779:9;6770:7;6766:23;6762:32;6759:2;;;6812:6;6804;6797:22;6759:2;6857:9;6844:23;6886:18;6927:2;6919:6;6916:14;6913:2;;;6948:6;6940;6933:22;6913:2;6991:6;6980:9;6976:22;6966:32;;7036:7;7029:4;7025:2;7021:13;7017:27;7007:2;;7063:6;7055;7048:22;7007:2;7108;7095:16;7131:69;7146:53;7192:6;7146:53;:::i;7131:69::-;7222:3;7246:6;7241:3;7234:19;7272:4;7301:2;7296:3;7292:12;7285:19;;7332:2;7328;7324:11;7385:7;7380:2;7374;7366:6;7362:15;7358:2;7354:24;7350:33;7347:46;7344:2;;;7411:6;7403;7396:22;7344:2;7438:6;7429:15;;7453:175;7467:6;7464:1;7461:13;7453:175;;;7528:25;7549:3;7528:25;:::i;:::-;7516:38;;7489:1;7482:9;;;;;7574:12;;;;7606;;7453:175;;;-1:-1:-1;7647:5:33;;-1:-1:-1;7690:18:33;;7677:32;;-1:-1:-1;;;7721:16:33;;;7718:2;;;7755:6;7747;7740:22;7718:2;;7783:69;7844:7;7833:8;7822:9;7818:24;7783:69;:::i;:::-;7773:79;;;6749:1109;;;;;:::o;7863:352::-;;7974:2;7962:9;7953:7;7949:23;7945:32;7942:2;;;7995:6;7987;7980:22;7942:2;8039:9;8026:23;8089:66;8082:5;8078:78;8071:5;8068:89;8058:2;;8176:6;8168;8161:22;8220:190;;8332:2;8320:9;8311:7;8307:23;8303:32;8300:2;;;8353:6;8345;8338:22;8300:2;-1:-1:-1;8381:23:33;;8290:120;-1:-1:-1;8290:120:33:o;8415:258::-;;;8544:2;8532:9;8523:7;8519:23;8515:32;8512:2;;;8565:6;8557;8550:22;8512:2;-1:-1:-1;;8593:23:33;;;8663:2;8648:18;;;8635:32;;-1:-1:-1;8502:171:33:o;8678:635::-;8849:2;8901:21;;;8971:13;;8874:18;;;8993:22;;;8678:635;;8849:2;9072:15;;;;9046:2;9031:18;;;8678:635;9118:169;9132:6;9129:1;9126:13;9118:169;;;9193:13;;9181:26;;9262:15;;;;9227:12;;;;9154:1;9147:9;9118:169;;;-1:-1:-1;9304:3:33;;8829:484;-1:-1:-1;;;;;;8829:484:33:o;9318:187::-;9483:14;;9476:22;9458:41;;9446:2;9431:18;;9413:92::o;9510:662::-;;9651:2;9680;9669:9;9662:21;9712:6;9706:13;9755:6;9750:2;9739:9;9735:18;9728:34;9780:4;9793:140;9807:6;9804:1;9801:13;9793:140;;;9902:14;;;9898:23;;9892:30;9868:17;;;9887:2;9864:26;9857:66;9822:10;;9793:140;;;9951:6;9948:1;9945:13;9942:2;;;10021:4;10016:2;10007:6;9996:9;9992:22;9988:31;9981:45;9942:2;-1:-1:-1;10088:2:33;10076:15;10093:66;10072:88;10057:104;;;;10163:2;10053:113;;9631:541;-1:-1:-1;;;9631:541:33:o;10177:416::-;10379:2;10361:21;;;10418:2;10398:18;;;10391:30;10457:34;10452:2;10437:18;;10430:62;10528:22;10523:2;10508:18;;10501:50;10583:3;10568:19;;10351:242::o;10598:177::-;10744:25;;;10732:2;10717:18;;10699:76::o;10780:248::-;10954:25;;;11010:2;10995:18;;10988:34;10942:2;10927:18;;10909:119::o;11033:242::-;11103:2;11097:9;11133:17;;;11180:18;11165:34;;11201:22;;;11162:62;11159:2;;;11227:9;11159:2;11254;11247:22;11077:198;;-1:-1:-1;11077:198:33:o;11280:183::-;;11379:18;11371:6;11368:30;11365:2;;;11401:9;11365:2;-1:-1:-1;11452:4:33;11433:17;;;11429:28;;11355:108::o"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "batchBurnMock(address,uint256[],uint256[])": "bd7a6c41",
              "batchMintMock(address,uint256[],uint256[],bytes)": "d7a0ad90",
              "burnMock(address,uint256,uint256)": "437ecbe9",
              "getIDBinIndex(uint256)": "db90e83c",
              "getValueInBin(uint256,uint256)": "eaec5f81",
              "isApprovedForAll(address,address)": "e985e9c5",
              "mintMock(address,uint256,uint256,bytes)": "a3f091f5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155.sol": {
        "ERC1155": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50611677806100206000396000f3fe608060405234801561001057600080fd5b506004361061007c5760003560e01c80634e1273f41161005b5780634e1273f4146102f5578063a22cb4651461046c578063e985e9c5146104a7578063f242432a146104e25761007c565b8062fdd58e1461008157806301ffc9a7146100cc5780632eb2c2d61461011f575b600080fd5b6100ba6004803603604081101561009757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105ba565b60408051918252519081900360200190f35b61010b600480360360208110156100e257600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166105ed565b604080519115158252519081900360200190f35b6102f3600480360360a081101561013557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561017657600080fd5b82018360208201111561018857600080fd5b803590602001918460208302840111640100000000831117156101aa57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156101fa57600080fd5b82018360208201111561020c57600080fd5b8035906020019184602083028401116401000000008311171561022e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561027e57600080fd5b82018360208201111561029057600080fd5b803590602001918460018302840111640100000000831117156102b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610652945050505050565b005b61041c6004803603604081101561030b57600080fd5b81019060208101813564010000000081111561032657600080fd5b82018360208201111561033857600080fd5b8035906020019184602083028401116401000000008311171561035a57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460208302840111640100000000831117156103de57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061075d945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610458578181015183820152602001610440565b505050509050019250505060405180910390f35b6102f36004803603604081101561048257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156108a9565b61010b600480360360408110156104bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610942565b6102f3600480360360a08110156104f857600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561054557600080fd5b82018360208201111561055757600080fd5b8035906020019184600183028401116401000000008311171561057957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061097d945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156106415750600161064d565b61064a82610a81565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061067b575061067b8533610942565b6106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061159a602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061153e6030913960400191505060405180910390fd5b61074885858585610acb565b610756858585855a86610e1f565b5050505050565b606081518351146107b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061156e602c913960400191505060405180910390fd5b6060835167ffffffffffffffff811180156107d357600080fd5b506040519080825280602002602001820160405280156107fd578160200160208202803683370190505b50905060005b84518110156108a15760008086838151811061081b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811061086b57fe5b602002602001015181526020019081526020016000205482828151811061088e57fe5b6020908102919091010152600101610803565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff861614806109a657506109a68533610942565b6109fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806114df602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806114b4602b913960400191505060405180910390fd5b610a7385858585611096565b610756858585855a86611199565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b8051825114610b25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806115096035913960400191505060405180910390fd5b815160005b81811015610d1757610bba838281518110610b4157fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610b9557fe5b602002602001015181526020019081526020016000205461138a90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610c0657fe5b6020026020010151815260200190815260200160002081905550610ca8838281518110610c2f57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610c8357fe5b602002602001015181526020019081526020016000205461140190919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610cf457fe5b602090810291909101810151825281019190915260400160002055600101610b2a565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610dc4578181015183820152602001610dac565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e03578181015183820152602001610deb565b5050505090500194505050505060405180910390a45050505050565b610e3e8573ffffffffffffffffffffffffffffffffffffffff1661147c565b1561108e5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610ef6578181015183820152602001610ede565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610f35578181015183820152602001610f1d565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015610f71578181015183820152602001610f59565b50505050905090810190601f168015610f9e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015610fc357600080fd5b5087f1158015610fd7573d6000803e3d6000fd5b50505050506040513d6020811015610fee57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806115c9603f913960400191505060405180910390fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546110cf908261138a565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152602081815260408083208784528252808320949094559186168152808252828120858252909152205461111f9082611401565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6111b88573ffffffffffffffffffffffffffffffffffffffff1661147c565b1561108e5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611271578181015183820152602001611259565b50505050905090810190601f16801561129e5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156112c157600080fd5b5087f11580156112d5573d6000803e3d6000fd5b50505050506040513d60208110156112ec57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611608603a913960400191505060405180910390fd5b6000828211156113fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008282018381101561147557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f801580159061147557507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47014159291505056fe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a2646970667358221220ab49cb90c11b43acedb2826880020eeb7bb392b3bfd9feda66ae1c02d8ade00b64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1677 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x4E2 JUMPI PUSH2 0x7C JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x11F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x5ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x22E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x652 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x338 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x75D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x458 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x440 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x942 JUMP JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x97D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x641 JUMPI POP PUSH1 0x1 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x64A DUP3 PUSH2 0xA81 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x67B JUMPI POP PUSH2 0x67B DUP6 CALLER PUSH2 0x942 JUMP JUMPDEST PUSH2 0x6D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x159A PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x153E PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x748 DUP6 DUP6 DUP6 DUP6 PUSH2 0xACB JUMP JUMPDEST PUSH2 0x756 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xE1F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x7B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x156E PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x7D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x7FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x81B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x86B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x88E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x803 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x9A6 JUMPI POP PUSH2 0x9A6 DUP6 CALLER PUSH2 0x942 JUMP JUMPDEST PUSH2 0x9FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14DF PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0xA67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14B4 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA73 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1096 JUMP JUMPDEST PUSH2 0x756 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1199 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0xB25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1509 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD17 JUMPI PUSH2 0xBBA DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB41 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB95 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x138A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC06 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xCA8 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC2F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xC83 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1401 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCF4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xB2A JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDAC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE03 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDEB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE3E DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x147C JUMP JUMPDEST ISZERO PUSH2 0x108E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEF6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEDE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF35 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF1D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF71 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF59 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF9E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0xFD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15C9 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x10CF SWAP1 DUP3 PUSH2 0x138A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x111F SWAP1 DUP3 PUSH2 0x1401 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x11B8 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x147C JUMP JUMPDEST ISZERO PUSH2 0x108E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1271 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1259 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x129E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x12D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1608 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x13FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1475 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1475 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB 0x49 0xCB SWAP1 0xC1 SHL NUMBER 0xAC 0xED 0xB2 DUP3 PUSH9 0x80020EEB7BB392B3BF 0xD9 INVALID 0xDA PUSH7 0xAE1C02D8ADE00B PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "324:8275:21:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061007c5760003560e01c80634e1273f41161005b5780634e1273f4146102f5578063a22cb4651461046c578063e985e9c5146104a7578063f242432a146104e25761007c565b8062fdd58e1461008157806301ffc9a7146100cc5780632eb2c2d61461011f575b600080fd5b6100ba6004803603604081101561009757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105ba565b60408051918252519081900360200190f35b61010b600480360360208110156100e257600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166105ed565b604080519115158252519081900360200190f35b6102f3600480360360a081101561013557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561017657600080fd5b82018360208201111561018857600080fd5b803590602001918460208302840111640100000000831117156101aa57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156101fa57600080fd5b82018360208201111561020c57600080fd5b8035906020019184602083028401116401000000008311171561022e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561027e57600080fd5b82018360208201111561029057600080fd5b803590602001918460018302840111640100000000831117156102b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610652945050505050565b005b61041c6004803603604081101561030b57600080fd5b81019060208101813564010000000081111561032657600080fd5b82018360208201111561033857600080fd5b8035906020019184602083028401116401000000008311171561035a57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460208302840111640100000000831117156103de57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061075d945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610458578181015183820152602001610440565b505050509050019250505060405180910390f35b6102f36004803603604081101561048257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156108a9565b61010b600480360360408110156104bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610942565b6102f3600480360360a08110156104f857600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561054557600080fd5b82018360208201111561055757600080fd5b8035906020019184600183028401116401000000008311171561057957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061097d945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156106415750600161064d565b61064a82610a81565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061067b575061067b8533610942565b6106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061159a602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061153e6030913960400191505060405180910390fd5b61074885858585610acb565b610756858585855a86610e1f565b5050505050565b606081518351146107b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061156e602c913960400191505060405180910390fd5b6060835167ffffffffffffffff811180156107d357600080fd5b506040519080825280602002602001820160405280156107fd578160200160208202803683370190505b50905060005b84518110156108a15760008086838151811061081b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811061086b57fe5b602002602001015181526020019081526020016000205482828151811061088e57fe5b6020908102919091010152600101610803565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff861614806109a657506109a68533610942565b6109fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806114df602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806114b4602b913960400191505060405180910390fd5b610a7385858585611096565b610756858585855a86611199565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b8051825114610b25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806115096035913960400191505060405180910390fd5b815160005b81811015610d1757610bba838281518110610b4157fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610b9557fe5b602002602001015181526020019081526020016000205461138a90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610c0657fe5b6020026020010151815260200190815260200160002081905550610ca8838281518110610c2f57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610c8357fe5b602002602001015181526020019081526020016000205461140190919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610cf457fe5b602090810291909101810151825281019190915260400160002055600101610b2a565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610dc4578181015183820152602001610dac565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e03578181015183820152602001610deb565b5050505090500194505050505060405180910390a45050505050565b610e3e8573ffffffffffffffffffffffffffffffffffffffff1661147c565b1561108e5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610ef6578181015183820152602001610ede565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610f35578181015183820152602001610f1d565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015610f71578181015183820152602001610f59565b50505050905090810190601f168015610f9e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015610fc357600080fd5b5087f1158015610fd7573d6000803e3d6000fd5b50505050506040513d6020811015610fee57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806115c9603f913960400191505060405180910390fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546110cf908261138a565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152602081815260408083208784528252808320949094559186168152808252828120858252909152205461111f9082611401565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6111b88573ffffffffffffffffffffffffffffffffffffffff1661147c565b1561108e5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611271578181015183820152602001611259565b50505050905090810190601f16801561129e5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156112c157600080fd5b5087f11580156112d5573d6000803e3d6000fd5b50505050506040513d60208110156112ec57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611608603a913960400191505060405180910390fd5b6000828211156113fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008282018381101561147557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f801580159061147557507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47014159291505056fe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a2646970667358221220ab49cb90c11b43acedb2826880020eeb7bb392b3bfd9feda66ae1c02d8ade00b64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x4E2 JUMPI PUSH2 0x7C JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x11F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x5ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x22E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x652 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x338 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x75D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x458 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x440 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x942 JUMP JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x97D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x641 JUMPI POP PUSH1 0x1 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x64A DUP3 PUSH2 0xA81 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x67B JUMPI POP PUSH2 0x67B DUP6 CALLER PUSH2 0x942 JUMP JUMPDEST PUSH2 0x6D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x159A PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x153E PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x748 DUP6 DUP6 DUP6 DUP6 PUSH2 0xACB JUMP JUMPDEST PUSH2 0x756 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xE1F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x7B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x156E PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x7D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x7FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x81B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x86B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x88E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x803 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x9A6 JUMPI POP PUSH2 0x9A6 DUP6 CALLER PUSH2 0x942 JUMP JUMPDEST PUSH2 0x9FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14DF PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0xA67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14B4 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA73 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1096 JUMP JUMPDEST PUSH2 0x756 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1199 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0xB25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1509 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD17 JUMPI PUSH2 0xBBA DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB41 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB95 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x138A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC06 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xCA8 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC2F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xC83 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1401 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCF4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xB2A JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDAC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE03 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDEB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE3E DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x147C JUMP JUMPDEST ISZERO PUSH2 0x108E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEF6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEDE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF35 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF1D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF71 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF59 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF9E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0xFD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15C9 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x10CF SWAP1 DUP3 PUSH2 0x138A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x111F SWAP1 DUP3 PUSH2 0x1401 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x11B8 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x147C JUMP JUMPDEST ISZERO PUSH2 0x108E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1271 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1259 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x129E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x12D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1608 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x13FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1475 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1475 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAB 0x49 0xCB SWAP1 0xC1 SHL NUMBER 0xAC 0xED 0xB2 DUP3 PUSH9 0x80020EEB7BB392B3BF 0xD9 INVALID 0xDA PUSH7 0xAE1C02D8ADE00B PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "324:8275:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7127:132;;;;;;;;;;;;;;;;-1:-1:-1;7127:132:21;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8371:226;;;;;;;;;;;;;;;;-1:-1:-1;8371:226:21;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2312:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2312:522:21;;;;;;;;-1:-1:-1;2312:522:21;;-1:-1:-1;;2312:522:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2312:522:21;;;;;;;;-1:-1:-1;2312:522:21;;-1:-1:-1;;2312:522:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2312:522:21;;-1:-1:-1;2312:522:21;;-1:-1:-1;;;;;2312:522:21:i;:::-;;7539:495;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7539:495:21;;;;;;;;-1:-1:-1;7539:495:21;;-1:-1:-1;;7539:495:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7539:495:21;;-1:-1:-1;7539:495:21;;-1:-1:-1;;;;;7539:495:21:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6135:230;;;;;;;;;;;;;;;;-1:-1:-1;6135:230:21;;;;;;;;;;;:::i;6627:160::-;;;;;;;;;;;;;;;;-1:-1:-1;6627:160:21;;;;;;;;;;;:::i;1373:556::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:556:21;;-1:-1:-1;1373:556:21;;-1:-1:-1;;;;;1373:556:21:i;7127:132::-;7233:16;;;;;7209:7;7233:16;;;;;;;;;;;:21;;;;;;;;;7127:132::o;8371:226::-;8457:4;8473:42;;;8489:26;8473:42;8469:74;;;-1:-1:-1;8532:4:21;8525:11;;8469:74;8555:37;8579:12;8555:23;:37::i;:::-;8548:44;;8371:226;;;;:::o;2312:522::-;2498:10;:19;;;;;2497:60;;;2522:35;2539:5;2546:10;2522:16;:35::i;:::-;2489:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2623:17;;;2615:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2700:50;2723:5;2730:3;2735:4;2741:8;2700:22;:50::i;:::-;2756:73;2784:5;2791:3;2796:4;2802:8;2812:9;2823:5;2756:27;:73::i;:::-;2312:522;;;;;:::o;7539:495::-;7646:16;7698:4;:11;7680:7;:14;:29;7672:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7782:30;7829:7;:14;7815:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7815:29:21;;7782:62;;7900:9;7895:108;7919:7;:14;7915:1;:18;7895:108;;;7967:8;:20;7976:7;7984:1;7976:10;;;;;;;;;;;;;;7967:20;;;;;;;;;;;;;;;:29;7988:4;7993:1;7988:7;;;;;;;;;;;;;;7967:29;;;;;;;;;;;;7948:13;7962:1;7948:16;;;;;;;;;;;;;;;;;:48;7935:3;;7895:108;;;-1:-1:-1;8016:13:21;7539:495;-1:-1:-1;;;7539:495:21:o;6135:230::-;6267:10;6257:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;6312:48;;;;;;;6257:32;;6267:10;6312:48;;;;;;;;;;;6135:230;;:::o;6627:160::-;6754:17;;;;6722:15;6754:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;6627:160::o;1373:556::-;1514:10;:19;;;;;1513:60;;;1538:35;1555:5;1562:10;1538:16;:35::i;:::-;1505:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:17;;;1626:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:43;1827:5;1834:3;1839;1844:7;1809:17;:43::i;:::-;1858:66;1881:5;1888:3;1893;1898:7;1907:9;1918:5;1858:22;:66::i;259:148:28:-;355:47;;;371:31;355:47;259:148;;;:::o;4452:670:21:-;4606:8;:15;4591:4;:11;:30;4583:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4743:11;;4723:17;4792:243;4816:9;4812:1;:13;4792:243;;;4915:41;4944:8;4953:1;4944:11;;;;;;;;;;;;;;4915:8;:15;4924:5;4915:15;;;;;;;;;;;;;;;:24;4931:4;4936:1;4931:7;;;;;;;;;;;;;;4915:24;;;;;;;;;;;;:28;;:41;;;;:::i;:::-;4888:8;:15;4897:5;4888:15;;;;;;;;;;;;;;;:24;4904:4;4909:1;4904:7;;;;;;;;;;;;;;4888:24;;;;;;;;;;;:68;;;;4989:39;5016:8;5025:1;5016:11;;;;;;;;;;;;;;4989:8;:13;4998:3;4989:13;;;;;;;;;;;;;;;:22;5003:4;5008:1;5003:7;;;;;;;;;;;;;;4989:22;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;4964:8;:13;4973:3;4964:13;;;;;;;;;;;;;;;:22;4978:4;4983:1;4978:7;;;;;;;;;;;;;;;;;;;4964:22;;;;;;;;;;-1:-1:-1;4964:22:21;:64;4827:3;;4792:243;;;;5097:3;5064:53;;5090:5;5064:53;;5078:10;5064:53;;;5102:4;5108:8;5064:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:670;;;;;:::o;5235:503::-;5456:16;:3;:14;;;:16::i;:::-;5452:282;;;5482:13;5520:3;5498:49;;;5553:9;5564:10;5576:5;5583:4;5589:8;5599:5;5498:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5498:107:21;;-1:-1:-1;5621:38:21;;;5631:28;5621:38;5613:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5452:282;;5235:503;;;;;;:::o;3224:367::-;3376:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;3401:7;3376:24;:33::i;:::-;3353:15;;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;3455:13;;;;;;;;;;;:18;;;;;;;;:31;;3478:7;3455:22;:31::i;:::-;3434:13;;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:52;;;;3534;;;;;;;;;;;;;3434:13;;3534:52;;;;3549:10;;3534:52;;;;;;;;;;;3224:367;;;;:::o;3699:456::-;3891:16;:3;:14;;;:16::i;:::-;3887:264;;;3917:13;3955:3;3933:44;;;3983:9;3994:10;4006:5;4013:3;4018:7;4027:5;3933:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3933:100:21;;-1:-1:-1;4049:32:21;;;4059:22;4049:32;4041:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1186:158:31;1244:7;1272:1;1267;:6;;1259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1319:5:31;;;1186:158::o;1419:::-;1477:7;1504:5;;;1523:6;;;;1515:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:1;1419:158;-1:-1:-1;;;1419:158:31:o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;882:52;-1:-1:-1;;541:398:27:o"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155Meta.sol": {
        "ERC1155Meta": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "signer",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "name": "NonceChange",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_signer",
                  "type": "address"
                }
              ],
              "name": "getNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_signerAddress",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "_hash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "_sig",
                  "type": "bytes"
                }
              ],
              "name": "isValidSignature",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isValid",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bool",
                  "name": "_isGasFee",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "metaSafeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "_isGasFee",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "metaSafeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "_isGasFee",
                  "type": "bool"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "metaSetApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50613356806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d35760003560e01c8063a3d4926e11610081578063f242432a1161005b578063f242432a146101b5578063f5d4c820146101c8578063fa4e12d7146101db576100d3565b8063a3d4926e1461017c578063ce0b514b1461018f578063e985e9c5146101a2576100d3565b80632eb2c2d6116100b25780632eb2c2d6146101345780634e1273f414610149578063a22cb46514610169576100d3565b8062fdd58e146100d857806301ffc9a7146101015780632d0335ab14610121575b600080fd5b6100eb6100e6366004612907565b6101ee565b6040516100f89190612f14565b60405180910390f35b61011461010f366004612a11565b610221565b6040516100f89190612c5e565b6100eb61012f36600461250d565b610286565b610147610142366004612667565b6102ae565b005b61015c610157366004612932565b6103b9565b6040516100f89190612c1a565b61014761017736600461285d565b610505565b61014761018a3660046125aa565b61059e565b61014761019d36600461278a565b61071b565b6101146101b0366004612572565b6107fa565b6101476101c3366004612802565b610835565b6101476101d6366004612711565b610939565b6101146101e936600461288a565b610a69565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000141561027557506001610281565b61027e8261124a565b90505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b3373ffffffffffffffffffffffffffffffffffffffff861614806102d757506102d785336107fa565b61032c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806131fa602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061316b6030913960400191505060405180910390fd5b6103a485858585611294565b6103b2858585855a866115e8565b5050505050565b60608151835114610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061319b602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561042f57600080fd5b50604051908082528060200260200182016040528015610459578160200160208202803683370190505b50905060005b84518110156104fd5760008086838151811061047757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106104c757fe5b60200260200101518152602001908152602001600020548282815181106104ea57fe5b602090810291909101015260010161045f565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff85166105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612dfd565b60405180910390fd5b60606105fe61233e565b60606106b189857fa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a060001b8c8c8c60405160200161063c9190612b10565b604051602081830303815290604052805190602001208c6040516020016106639190612b10565b604051602081830303815290604052805190602001208c610685576000610688565b60015b60405160200161069d96959493929190612c69565b604051602081830303815290604052611855565b90506106bf89898989611294565b841561070257808060200190518101906106d99190612adb565b80945081935050506106f3898989898660200151886115e8565b6106fd8983611a24565b610710565b610710898989895a866115e8565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610768576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612ce6565b606061077261233e565b60606107aa89857fce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558828c8c8c8c610685576000610688565b90506107b889898989611ccd565b84156107ec57808060200190518101906107d29190612adb565b80945081935050506106f389898989866020015188611dd0565b610710898989895a86611dd0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff8616148061085e575061085e85336107fa565b6108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613065602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613003602b913960400191505060405180910390fd5b61092b85858585611ccd565b6103b2858585855a86611dd0565b606061099586837ff5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa52482898961096f576000610972565b60015b8961097e576000610981565b60015b60405160200161069d959493929190612caa565b73ffffffffffffffffffffffffffffffffffffffff8781166000818152600160209081526040808320948b16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168915151790555192935090917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190610a29908890612c5e565b60405180910390a38215610a6157610a3f61233e565b81806020019051810190610a539190612aa8565b9050610a5f8782611a24565b505b505050505050565b600080825111610ac4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806132296043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610b30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806131c76033913960400191505060405180910390fd5b6000610b3b83611fc1565b60f81c905060058110610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806130c4603a913960400191505060405180910390fd5b60008160ff166005811115610baa57fe5b9050600080808080856005811115610bbe57fe5b1415610c15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806130fe6036913960400191505060405180910390fd5b6001856005811115610c2357fe5b1415610d66578751606114610c83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806131346037913960400191505060405180910390fd5b610c8e88600061207e565b9250610c9b88602061207e565b915087604081518110610caa57fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610d14573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d811691161497506112429650505050505050565b6002856005811115610d7457fe5b1415610ec4578751606114610dd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806131346037913960400191505060405180910390fd5b610ddf88600061207e565b9250610dec88602061207e565b915087604081518110610dfb57fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610d14573d6000803e3d6000fd5b6003856005811115610ed257fe5b141561108a57604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b83811015610f60578181015183820152602001610f48565b50505050905090810190601f168015610f8d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610fc0578181015183820152602001610fa8565b50505050905090810190601f168015610fed5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561100c57600080fd5b505afa158015611020573d6000803e3d6000fd5b505050506040513d602081101561103657600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b0000000000000000000000000000000000000000000000000000000014965061124295505050505050565b600485600581111561109857fe5b14156111f157604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b83811015611128578181015183820152602001611110565b50505050905090810190601f1680156111555780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d602081101561119d57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014965061124295505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806130c4603a913960400191505060405180910390fd5b949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b80518251146112ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061308f6035913960400191505060405180910390fd5b815160005b818110156114e05761138383828151811061130a57fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061135e57fe5b60200260200101518152602001908152602001600020546120e690919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106113cf57fe5b60200260200101518152602001908152602001600020819055506114718382815181106113f857fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061144c57fe5b602002602001015181526020019081526020016000205461215d90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106114bd57fe5b6020908102919091018101518252810191909152604001600020556001016112f3565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561158d578181015183820152602001611575565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156115cc5781810151838201526020016115b4565b5050505090500194505050505060405180910390a45050505050565b6116078573ffffffffffffffffffffffffffffffffffffffff166121d8565b15610a615760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156116bf5781810151838201526020016116a7565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156116fe5781810151838201526020016116e6565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561173a578181015183820152602001611722565b50505050905090810190601f1680156117675780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561178c57600080fd5b5087f11580156117a0573d6000803e3d6000fd5b50505050506040513d60208110156117b757600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f81526020018061326c603f913960400191505060405180910390fd5b6060808380602001905181019061186c9190612a51565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040812054919450919250906118a483604161207e565b90508181108015906118b857508160640181105b6118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612e5a565b600061192a8683878051906020012060405160200161190f93929190612b46565b6040516020818303038152906040528051906020012061220f565b9050606086838760405160200161194393929190612b6d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825273ffffffffffffffffffffffffffffffffffffffff8c166000818152600260205292909220600187019081905590935090917fb861b7bdbe611a846ab271b8d2810391bc8b5a968f390c322438ecab66bccf59916119ce91612f14565b60405180910390a26119e289838388610a69565b611a18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612d43565b50505050509392505050565b6000611a338260600151611fc1565b60f81c905060028110611a72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612eb7565b60008160ff166002811115611a8357fe5b835160408501519192506000918291829173ffffffffffffffffffffffffffffffffffffffff1615611ab9578660400151611abb565b335b92506000856002811115611acb57fe5b1415611bca578660600151806020019051810190611ae99190612545565b909450915073ffffffffffffffffffffffffffffffffffffffff8416301415611b3a57611b1888848484611ccd565b611b358884845a8560405180602001604052806000815250611dd0565b611bc5565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f242432a90611b92908b90879087908790600401612bd5565b600060405180830381600087803b158015611bac57600080fd5b505af1158015611bc0573d6000803e3d6000fd5b505050505b611cc3565b8660600151806020019051810190611be29190612529565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90611c3b908b9087908690600401612ba4565b602060405180830381600087803b158015611c5557600080fd5b505af1158015611c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8d91906129f5565b611cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612da0565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320858452909152902054611d0690826120e6565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526020818152604080832087845282528083209490945591861681528082528281208582529091522054611d56908261215d565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b611def8573ffffffffffffffffffffffffffffffffffffffff166121d8565b15610a615760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ea8578181015183820152602001611e90565b50505050905090810190601f168015611ed55780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b158015611ef857600080fd5b5087f1158015611f0c573d6000803e3d6000fd5b50505050506040513d6020811015611f2357600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806132ab603a913960400191505060405180910390fd5b60008082511161201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018061302e6037913960400191505060405180910390fd5b8160018351038151811061202c57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b600081602001835110156120dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806132e5603c913960400191505060405180910390fd5b50016020015190565b60008282111561215757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000828201838110156121d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f80158015906121d157507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b604080518082018252600281527f1901000000000000000000000000000000000000000000000000000000000000602080830191825283517f035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d47498183015230818601528451808203860181526060820190955284519490910193909320825160009491928692608001918291908083835b602083106122dc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161229f565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b60405180608001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600082601f83011261238c578081fd5b813561239f61239a82612f41565b612f1d565b8181529150602080830190848101818402860182018710156123c057600080fd5b60005b848110156123df578135845292820192908201906001016123c3565b505050505092915050565b600082601f8301126123fa578081fd5b813561240861239a82612f5f565b915080825283602082850101111561241f57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612448578081fd5b815161245661239a82612f5f565b915080825283602082850101111561246d57600080fd5b61247e816020840160208601612f9f565b5092915050565b600060808284031215612496578081fd5b6040516080810167ffffffffffffffff82821081831117156124b457fe5b816040528293508451835260208501516020840152604085015191506124d982612fcf565b81604084015260608501519150808211156124f357600080fd5b5061250085828601612438565b6060830152505092915050565b60006020828403121561251e578081fd5b81356121d181612fcf565b60006020828403121561253a578081fd5b81516121d181612fcf565b60008060408385031215612557578081fd5b825161256281612fcf565b6020939093015192949293505050565b60008060408385031215612584578182fd5b823561258f81612fcf565b9150602083013561259f81612fcf565b809150509250929050565b60008060008060008060c087890312156125c2578182fd5b86356125cd81612fcf565b955060208701356125dd81612fcf565b9450604087013567ffffffffffffffff808211156125f9578384fd5b6126058a838b0161237c565b9550606089013591508082111561261a578384fd5b6126268a838b0161237c565b94506080890135915061263882612ff4565b90925060a0880135908082111561264d578283fd5b5061265a89828a016123ea565b9150509295509295509295565b600080600080600060a0868803121561267e578081fd5b853561268981612fcf565b9450602086013561269981612fcf565b9350604086013567ffffffffffffffff808211156126b5578283fd5b6126c189838a0161237c565b945060608801359150808211156126d6578283fd5b6126e289838a0161237c565b935060808801359150808211156126f7578283fd5b50612704888289016123ea565b9150509295509295909350565b600080600080600060a08688031215612728578081fd5b853561273381612fcf565b9450602086013561274381612fcf565b9350604086013561275381612ff4565b9250606086013561276381612ff4565b9150608086013567ffffffffffffffff81111561277e578182fd5b612704888289016123ea565b60008060008060008060c087890312156127a2578384fd5b86356127ad81612fcf565b955060208701356127bd81612fcf565b9450604087013593506060870135925060808701356127db81612ff4565b915060a087013567ffffffffffffffff8111156127f6578182fd5b61265a89828a016123ea565b600080600080600060a08688031215612819578283fd5b853561282481612fcf565b9450602086013561283481612fcf565b93506040860135925060608601359150608086013567ffffffffffffffff81111561277e578182fd5b6000806040838503121561286f578182fd5b823561287a81612fcf565b9150602083013561259f81612ff4565b6000806000806080858703121561289f578182fd5b84356128aa81612fcf565b935060208501359250604085013567ffffffffffffffff808211156128cd578384fd5b6128d9888389016123ea565b935060608701359150808211156128ee578283fd5b506128fb878288016123ea565b91505092959194509250565b60008060408385031215612919578182fd5b823561292481612fcf565b946020939093013593505050565b60008060408385031215612944578182fd5b823567ffffffffffffffff8082111561295b578384fd5b818501915085601f83011261296e578384fd5b813561297c61239a82612f41565b80828252602080830192508086018a82838702890101111561299c578889fd5b8896505b848710156129c75780356129b381612fcf565b8452600196909601959281019281016129a0565b5090965087013593505050808211156129de578283fd5b506129eb8582860161237c565b9150509250929050565b600060208284031215612a06578081fd5b81516121d181612ff4565b600060208284031215612a22578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146121d1578182fd5b60008060408385031215612a63578182fd5b825167ffffffffffffffff80821115612a7a578384fd5b612a8686838701612438565b93506020850151915080821115612a9b578283fd5b506129eb85828601612438565b600060208284031215612ab9578081fd5b815167ffffffffffffffff811115612acf578182fd5b61124284828501612485565b60008060408385031215612aed578182fd5b825167ffffffffffffffff80821115612b04578384fd5b612a8686838701612485565b815160009082906020808601845b83811015612b3a57815185529382019390820190600101612b1e565b50929695505050505050565b60008451612b58818460208901612f9f565b91909101928352506020820152604001919050565b60008451612b7f818460208901612f9f565b82018481528351612b97816020808501908801612f9f565b0160200195945050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6020808252825182820181905260009190848201906040850190845b81811015612c5257835183529284019291840191600101612c36565b50909695505050505050565b901515815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b60208082526033908201527f455243313135354d657461236d657461536166655472616e7366657246726f6d60408201527f3a20494e56414c49445f524543495049454e5400000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f5349474e415455524500000000000000000000000000606082015260800190565b60208082526032908201527f455243313135354d657461235f7472616e736665724761734665653a2045524360408201527f32305f5452414e534645525f4641494c45440000000000000000000000000000606082015260800190565b60208082526038908201527f455243313135354d657461236d6574615361666542617463685472616e73666560408201527f7246726f6d3a20494e56414c49445f524543495049454e540000000000000000606082015260800190565b6020808252602f908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f4e4f4e43450000000000000000000000000000000000606082015260800190565b6020808252602e908201527f455243313135354d657461235f7472616e736665724761734665653a20554e5360408201527f5550504f525445445f544f4b454e000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715612f3957fe5b604052919050565b600067ffffffffffffffff821115612f5557fe5b5060209081020190565b600067ffffffffffffffff821115612f7357fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612fba578181015183820152602001612fa2565b83811115612fc9576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114612ff157600080fd5b50565b8015158114612ff157600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245444552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f524551554952454445524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e455245524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f524551554952454445524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d4553534147454c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a2646970667358221220f4c7476882d4d2ee082a3c5ffbca34153b801c91b645155a177647fac534e14664736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3356 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3D4926E GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xF242432A GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0xF5D4C820 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xFA4E12D7 EQ PUSH2 0x1DB JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0xA3D4926E EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0xCE0B514B EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1A2 JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x169 JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2907 JUMP JUMPDEST PUSH2 0x1EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x2F14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0x2A11 JUMP JUMPDEST PUSH2 0x221 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x2C5E JUMP JUMPDEST PUSH2 0xEB PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x250D JUMP JUMPDEST PUSH2 0x286 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0x2667 JUMP JUMPDEST PUSH2 0x2AE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15C PUSH2 0x157 CALLDATASIZE PUSH1 0x4 PUSH2 0x2932 JUMP JUMPDEST PUSH2 0x3B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x2C1A JUMP JUMPDEST PUSH2 0x147 PUSH2 0x177 CALLDATASIZE PUSH1 0x4 PUSH2 0x285D JUMP JUMPDEST PUSH2 0x505 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0x25AA JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST PUSH2 0x147 PUSH2 0x19D CALLDATASIZE PUSH1 0x4 PUSH2 0x278A JUMP JUMPDEST PUSH2 0x71B JUMP JUMPDEST PUSH2 0x114 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2572 JUMP JUMPDEST PUSH2 0x7FA JUMP JUMPDEST PUSH2 0x147 PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2802 JUMP JUMPDEST PUSH2 0x835 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2711 JUMP JUMPDEST PUSH2 0x939 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x1E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x288A JUMP JUMPDEST PUSH2 0xA69 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x275 JUMPI POP PUSH1 0x1 PUSH2 0x281 JUMP JUMPDEST PUSH2 0x27E DUP3 PUSH2 0x124A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x2D7 JUMPI POP PUSH2 0x2D7 DUP6 CALLER PUSH2 0x7FA JUMP JUMPDEST PUSH2 0x32C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x31FA PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x398 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x316B PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3A4 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1294 JUMP JUMPDEST PUSH2 0x3B2 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x15E8 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x319B PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x459 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x4FD JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x477 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4C7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4EA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x45F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x5F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2DFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x5FE PUSH2 0x233E JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6B1 DUP10 DUP6 PUSH32 0xA3D4926E8CF8FE8E020CD29F514C256BC2EEC62AA2337E415F1A33A4828AF5A0 PUSH1 0x0 SHL DUP13 DUP13 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x63C SWAP2 SWAP1 PUSH2 0x2B10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x663 SWAP2 SWAP1 PUSH2 0x2B10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH2 0x685 JUMPI PUSH1 0x0 PUSH2 0x688 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x69D SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C69 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x1855 JUMP JUMPDEST SWAP1 POP PUSH2 0x6BF DUP10 DUP10 DUP10 DUP10 PUSH2 0x1294 JUMP JUMPDEST DUP5 ISZERO PUSH2 0x702 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x6D9 SWAP2 SWAP1 PUSH2 0x2ADB JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0x6F3 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x6FD DUP10 DUP4 PUSH2 0x1A24 JUMP JUMPDEST PUSH2 0x710 JUMP JUMPDEST PUSH2 0x710 DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x15E8 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x768 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2CE6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x772 PUSH2 0x233E JUMP JUMPDEST PUSH1 0x60 PUSH2 0x7AA DUP10 DUP6 PUSH32 0xCE0B514B3931BDBE4D5D44E4F035AFE7113767B7DB71949271F6A62D9C60F558 DUP3 DUP13 DUP13 DUP13 DUP13 PUSH2 0x685 JUMPI PUSH1 0x0 PUSH2 0x688 JUMP JUMPDEST SWAP1 POP PUSH2 0x7B8 DUP10 DUP10 DUP10 DUP10 PUSH2 0x1CCD JUMP JUMPDEST DUP5 ISZERO PUSH2 0x7EC JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x7D2 SWAP2 SWAP1 PUSH2 0x2ADB JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0x6F3 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x1DD0 JUMP JUMPDEST PUSH2 0x710 DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x1DD0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x85E JUMPI POP PUSH2 0x85E DUP6 CALLER PUSH2 0x7FA JUMP JUMPDEST PUSH2 0x8B3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3065 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x91F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3003 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x92B DUP6 DUP6 DUP6 DUP6 PUSH2 0x1CCD JUMP JUMPDEST PUSH2 0x3B2 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1DD0 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x995 DUP7 DUP4 PUSH32 0xF5D4C820494C8595DE274C7FF619BEAD38AAC4FBC3D143B5BF956AA4B84FA524 DUP3 DUP10 DUP10 PUSH2 0x96F JUMPI PUSH1 0x0 PUSH2 0x972 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP10 PUSH2 0x97E JUMPI PUSH1 0x0 PUSH2 0x981 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x69D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2CAA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP12 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP10 ISZERO ISZERO OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP1 PUSH2 0xA29 SWAP1 DUP9 SWAP1 PUSH2 0x2C5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP3 ISZERO PUSH2 0xA61 JUMPI PUSH2 0xA3F PUSH2 0x233E JUMP JUMPDEST DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xA53 SWAP2 SWAP1 PUSH2 0x2AA8 JUMP JUMPDEST SWAP1 POP PUSH2 0xA5F DUP8 DUP3 PUSH2 0x1A24 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0xAC4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3229 PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0xB30 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x31C7 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB3B DUP4 PUSH2 0x1FC1 JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x5 DUP2 LT PUSH2 0xB99 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x30C4 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xBAA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xBBE JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xC15 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x30FE PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xC23 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xD66 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0xC83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3134 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC8E DUP9 PUSH1 0x0 PUSH2 0x207E JUMP JUMPDEST SWAP3 POP PUSH2 0xC9B DUP9 PUSH1 0x20 PUSH2 0x207E JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0xCAA JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP4 POP PUSH1 0x1 DUP11 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 DUP2 AND SWAP2 AND EQ SWAP8 POP PUSH2 0x1242 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xD74 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xEC4 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0xDD4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3134 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDDF DUP9 PUSH1 0x0 PUSH2 0x207E JUMP JUMPDEST SWAP3 POP PUSH2 0xDEC DUP9 PUSH1 0x20 PUSH2 0x207E JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0xDFB JUMPI INVALID JUMPDEST ADD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 DUP6 ADD MSTORE PUSH1 0x3C DUP1 DUP3 ADD DUP16 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x5C DUP3 ADD DUP1 DUP5 MSTORE DUP2 MLOAD SWAP2 DUP7 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP1 SWAP2 MSTORE PUSH1 0x7C DUP3 ADD DUP1 DUP5 MSTORE MSTORE PUSH1 0xF8 SWAP3 SWAP1 SWAP3 SHR PUSH1 0x9C DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xBC DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0xDC DUP4 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP1 SWAP7 POP PUSH1 0x1 SWAP3 PUSH1 0xFC DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xED2 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x108A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 DUP3 MSTORE DUP11 MLOAD PUSH1 0x44 DUP3 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP3 PUSH4 0x20C13B0B SWAP3 DUP14 SWAP3 DUP14 SWAP3 SWAP2 DUP3 SWAP2 PUSH1 0x24 DUP3 ADD SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF60 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF48 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF8D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFC0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFA8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFED JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x100C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1020 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1036 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x1242 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1098 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP13 DUP2 MSTORE PUSH1 0x24 DUP3 ADD SWAP3 DUP4 MSTORE DUP11 MLOAD PUSH1 0x44 DUP4 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP4 PUSH4 0x1626BA7E SWAP4 DUP16 SWAP4 DUP15 SWAP4 SWAP1 SWAP3 SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1128 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1110 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1155 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1187 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x119D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x1242 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x30C4 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x12EE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x308F PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14E0 JUMPI PUSH2 0x1383 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x130A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x135E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x20E6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x13CF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x1471 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x13F8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x144C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x215D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x14BD JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x12F3 JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x158D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1575 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15CC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x15B4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1607 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x21D8 JUMP JUMPDEST ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16FE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16E6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x173A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1722 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1767 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x178C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x17A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xA5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x326C PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP1 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x186C SWAP2 SWAP1 PUSH2 0x2A51 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x18A4 DUP4 PUSH1 0x41 PUSH2 0x207E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x18B8 JUMPI POP DUP2 PUSH1 0x64 ADD DUP2 LT JUMPDEST PUSH2 0x18EE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2E5A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x192A DUP7 DUP4 DUP8 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x190F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B46 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x220F JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP7 DUP4 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1943 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B6D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x1 DUP8 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 SWAP4 POP SWAP1 SWAP2 PUSH32 0xB861B7BDBE611A846AB271B8D2810391BC8B5A968F390C322438ECAB66BCCF59 SWAP2 PUSH2 0x19CE SWAP2 PUSH2 0x2F14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x19E2 DUP10 DUP4 DUP4 DUP9 PUSH2 0xA69 JUMP JUMPDEST PUSH2 0x1A18 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2D43 JUMP JUMPDEST POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A33 DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x1FC1 JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x2 DUP2 LT PUSH2 0x1A72 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2EB7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1A83 JUMPI INVALID JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP6 ADD MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x1AB9 JUMPI DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x1ABB JUMP JUMPDEST CALLER JUMPDEST SWAP3 POP PUSH1 0x0 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1ACB JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1BCA JUMPI DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1AE9 SWAP2 SWAP1 PUSH2 0x2545 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ ISZERO PUSH2 0x1B3A JUMPI PUSH2 0x1B18 DUP9 DUP5 DUP5 DUP5 PUSH2 0x1CCD JUMP JUMPDEST PUSH2 0x1B35 DUP9 DUP5 DUP5 GAS DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1DD0 JUMP JUMPDEST PUSH2 0x1BC5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0xF242432A SWAP1 PUSH2 0x1B92 SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2BD5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1CC3 JUMP JUMPDEST DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1BE2 SWAP2 SWAP1 PUSH2 0x2529 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x1C3B SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2BA4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C69 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C8D SWAP2 SWAP1 PUSH2 0x29F5 JUMP JUMPDEST PUSH2 0x1CC3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2DA0 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1D06 SWAP1 DUP3 PUSH2 0x20E6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x1D56 SWAP1 DUP3 PUSH2 0x215D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1DEF DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x21D8 JUMP JUMPDEST ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1EA8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E90 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1ED5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1F0C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xA5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32AB PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x201C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x302E PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x202C JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO PUSH2 0x20DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32E5 PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x2157 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x21D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x21D1 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD PUSH32 0x35AFF83D86937D35B32E04F0DDC6FF469290EEF2F1B692D8A815C89404D4749 DUP2 DUP4 ADD MSTORE ADDRESS DUP2 DUP7 ADD MSTORE DUP5 MLOAD DUP1 DUP3 SUB DUP7 ADD DUP2 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP6 MSTORE DUP5 MLOAD SWAP5 SWAP1 SWAP2 ADD SWAP4 SWAP1 SWAP4 KECCAK256 DUP3 MLOAD PUSH1 0x0 SWAP5 SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0x80 ADD SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x22DC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x229F JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE SWAP3 ADD SWAP5 DUP6 MSTORE POP DUP4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP5 SUB DUP4 ADD DUP2 MSTORE SWAP3 DUP2 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x238C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x239F PUSH2 0x239A DUP3 PUSH2 0x2F41 JUMP JUMPDEST PUSH2 0x2F1D JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x23C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x23DF JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x23C3 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23FA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2408 PUSH2 0x239A DUP3 PUSH2 0x2F5F JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x241F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2448 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2456 PUSH2 0x239A DUP3 PUSH2 0x2F5F JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x246D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x247E DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2F9F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2496 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x24B4 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 SWAP4 POP DUP5 MLOAD DUP4 MSTORE PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH2 0x24D9 DUP3 PUSH2 0x2FCF JUMP JUMPDEST DUP2 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x24F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2500 DUP6 DUP3 DUP7 ADD PUSH2 0x2438 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21D1 DUP2 PUSH2 0x2FCF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x253A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21D1 DUP2 PUSH2 0x2FCF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2557 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x2562 DUP2 PUSH2 0x2FCF JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2584 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x258F DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x259F DUP2 PUSH2 0x2FCF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x25C2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x25CD DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x25DD DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x25F9 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2605 DUP11 DUP4 DUP12 ADD PUSH2 0x237C JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x261A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2626 DUP11 DUP4 DUP12 ADD PUSH2 0x237C JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH2 0x2638 DUP3 PUSH2 0x2FF4 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x264D JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x265A DUP10 DUP3 DUP11 ADD PUSH2 0x23EA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x267E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2689 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2699 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x26B5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x26C1 DUP10 DUP4 DUP11 ADD PUSH2 0x237C JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x26D6 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x26E2 DUP10 DUP4 DUP11 ADD PUSH2 0x237C JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x26F7 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2704 DUP9 DUP3 DUP10 ADD PUSH2 0x23EA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2728 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2733 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2743 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2753 DUP2 PUSH2 0x2FF4 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x2763 DUP2 PUSH2 0x2FF4 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x277E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2704 DUP9 DUP3 DUP10 ADD PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x27A2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x27AD DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x27BD DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x27DB DUP2 PUSH2 0x2FF4 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27F6 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x265A DUP10 DUP3 DUP11 ADD PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2819 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2824 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2834 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x277E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x286F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x287A DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x259F DUP2 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x289F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x28AA DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28CD JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x28D9 DUP9 DUP4 DUP10 ADD PUSH2 0x23EA JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x28EE JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x28FB DUP8 DUP3 DUP9 ADD PUSH2 0x23EA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2919 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2924 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2944 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x295B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x296E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x297C PUSH2 0x239A DUP3 PUSH2 0x2F41 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x299C JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x29C7 JUMPI DUP1 CALLDATALOAD PUSH2 0x29B3 DUP2 PUSH2 0x2FCF JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x29A0 JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x29DE JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x29EB DUP6 DUP3 DUP7 ADD PUSH2 0x237C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A06 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21D1 DUP2 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A22 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x21D1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A63 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2A7A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2A86 DUP7 DUP4 DUP8 ADD PUSH2 0x2438 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2A9B JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x29EB DUP6 DUP3 DUP7 ADD PUSH2 0x2438 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AB9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2ACF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1242 DUP5 DUP3 DUP6 ADD PUSH2 0x2485 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2AED JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2B04 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2A86 DUP7 DUP4 DUP8 ADD PUSH2 0x2485 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 DUP3 SWAP1 PUSH1 0x20 DUP1 DUP7 ADD DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B3A JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2B1E JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x2B58 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x2F9F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 DUP4 MSTORE POP PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x2B7F DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x2F9F JUMP JUMPDEST DUP3 ADD DUP5 DUP2 MSTORE DUP4 MLOAD PUSH2 0x2B97 DUP2 PUSH1 0x20 DUP1 DUP6 ADD SWAP1 DUP9 ADD PUSH2 0x2F9F JUMP JUMPDEST ADD PUSH1 0x20 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2C52 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2C36 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D657461536166655472616E7366657246726F6D PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F524543495049454E5400000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F5349474E415455524500000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20455243 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x32305F5452414E534645525F4641494C45440000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D6574615361666542617463685472616E736665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7246726F6D3A20494E56414C49445F524543495049454E540000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2F SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F4E4F4E43450000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20554E53 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x5550504F525445445F544F4B454E000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2F39 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2F55 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2F73 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2FA2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2FC9 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2FF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2FF1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD 0x4C PUSH10 0x62427974657323706F70 0x4C PUSH2 0x7374 TIMESTAMP PUSH26 0x74653A20475245415445525F5448414E5F5A45524F5F4C454E47 SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 SSTORE 0x4E MSTORE8 SSTORE POP POP 0x4F MSTORE SLOAD GASLIMIT DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4C 0x4C GASLIMIT SELFBALANCE COINBASE 0x4C 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F CODECOPY CALLDATACOPY 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E GASLIMIT MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F SLOAD 0x48 COINBASE 0x4E 0x5F ADDRESS 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT 0x4C PUSH10 0x62427974657323726561 PUSH5 0x4279746573 CALLER ORIGIN GASPRICE KECCAK256 SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F 0x4F MSTORE 0x5F GASLIMIT MLOAD SSTORE COINBASE 0x4C 0x5F SLOAD 0x4F 0x5F CALLER ORIGIN 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL 0xC7 SELFBALANCE PUSH9 0x82D4D2EE082A3C5FFB 0xCA CALLVALUE ISZERO EXTCODESIZE DUP1 SHR SWAP2 0xB6 GASLIMIT ISZERO GAS OR PUSH23 0x47FAC534E14664736F6C63430007040033000000000000 ",
              "sourceMap": "473:13125:22:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:22903:33",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:33",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:622:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "133:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "142:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "149:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "135:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "135:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "135:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "112:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "120:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "108:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "108:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "127:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "104:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "104:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "94:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "193:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "180:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "180:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "170:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "209:78:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "279:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "233:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "233:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "218:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "218:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "209:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "296:16:33",
                              "value": {
                                "name": "array",
                                "nodeType": "YulIdentifier",
                                "src": "307:5:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "300:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "328:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "335:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "321:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "321:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "321:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "351:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "361:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "355:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "374:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "385:5:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "392:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "381:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "381:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "374:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "404:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "419:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "427:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "415:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "415:15:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "408:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "489:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "498:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "501:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "491:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "491:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "491:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "453:6:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "465:6:33"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "473:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "461:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "461:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "449:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "449:28:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "479:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "445:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "445:37:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "484:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "442:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "442:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "439:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "514:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "523:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "518:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "582:118:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "603:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "621:3:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "608:12:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "608:17:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "596:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "596:30:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "596:30:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "639:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "650:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "655:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "646:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "646:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "639:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "671:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "682:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "687:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "678:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "678:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "671:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "544:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "547:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "541:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "541:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "555:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "557:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "566:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "569:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "562:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "562:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "557:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "537:3:33",
                                "statements": []
                              },
                              "src": "533:167:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_array$_t_uint256_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "58:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "66:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "74:5:33",
                            "type": ""
                          }
                        ],
                        "src": "14:692:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "765:406:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "814:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "823:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "830:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "816:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "816:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "816:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "793:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "801:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "789:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "789:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "808:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "785:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "785:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "778:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "778:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "775:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "847:34:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "874:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "861:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "861:20:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "851:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "890:62:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "944:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "914:29:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "914:37:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "899:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "899:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "890:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "968:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "975:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "961:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "961:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "961:21:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1034:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1043:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1046:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1036:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1036:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1036:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1005:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1013:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1001:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1001:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1022:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "997:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "997:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1029:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "994:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "994:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "991:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "1076:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1083:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1072:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1072:16:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1094:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1102:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1090:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1090:17:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1109:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "1059:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1059:57:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1059:57:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array",
                                            "nodeType": "YulIdentifier",
                                            "src": "1140:5:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1147:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1136:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1136:18:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1156:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1132:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1132:29:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1163:1:33",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1125:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1125:40:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1125:40:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "739:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "747:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "755:5:33",
                            "type": ""
                          }
                        ],
                        "src": "711:460:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1241:359:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1290:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1299:5:33"
                                        },
                                        {
                                          "name": "array",
                                          "nodeType": "YulIdentifier",
                                          "src": "1306:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1292:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1292:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1292:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1269:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1277:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1265:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1265:17:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1284:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1261:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1261:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1254:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1254:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1251:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1323:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1343:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1337:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1337:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "1327:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1359:62:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "1413:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "1383:29:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1383:37:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1368:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1368:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "1359:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1437:5:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1444:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1430:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1430:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1430:21:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1503:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1512:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1515:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1505:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1505:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1505:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1474:6:33"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "1482:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1470:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1470:19:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1491:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1466:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1466:30:33"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1498:3:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1463:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1463:39:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1460:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "1554:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1562:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1550:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1550:17:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "array",
                                        "nodeType": "YulIdentifier",
                                        "src": "1573:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1580:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1569:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1569:16:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1587:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "1528:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1528:66:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1528:66:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_bytes_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1215:6:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1223:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "1231:5:33",
                            "type": ""
                          }
                        ],
                        "src": "1176:424:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1686:731:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1730:24:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "1739:5:33"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "1746:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1732:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1732:20:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1732:20:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1707:3:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1712:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1703:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1703:19:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1724:4:33",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1699:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1699:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1696:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1763:23:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1783:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1777:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1777:9:33"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1767:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1795:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1817:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1825:4:33",
                                    "type": "",
                                    "value": "0x80"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1813:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1813:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "1799:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1839:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1849:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1843:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1926:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "1928:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1928:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1928:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1885:10:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1897:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1882:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1882:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1905:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "1917:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1902:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1902:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "1879:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1879:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "1876:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1955:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1959:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1948:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1948:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1948:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1979:15:33",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "1988:6:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "1979:5:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2010:6:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2024:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "2018:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2018:16:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2003:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2003:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2003:32:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2055:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2063:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2051:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2051:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "2078:9:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2089:2:33",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2074:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2074:18:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "2068:5:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2068:25:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2044:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2044:50:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2044:50:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2103:40:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2128:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2139:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2124:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2124:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2118:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2118:25:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2107:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2179:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2152:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2152:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2152:35:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2207:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2215:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2203:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2203:15:33"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2220:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2196:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2196:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2196:32:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2237:39:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2261:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2272:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2257:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2257:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2251:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2251:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2241:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2303:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2312:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2315:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2305:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2305:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2305:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2291:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2299:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2288:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2288:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2285:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2339:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2347:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2335:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2335:15:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "2386:9:33"
                                          },
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "2397:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2382:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2382:22:33"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "2406:3:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_t_bytes_fromMemory",
                                      "nodeType": "YulIdentifier",
                                      "src": "2352:29:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2352:58:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2328:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2328:83:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2328:83:33"
                            }
                          ]
                        },
                        "name": "abi_decode_t_struct$_GasReceipt_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1657:9:33",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1668:3:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1676:5:33",
                            "type": ""
                          }
                        ],
                        "src": "1605:812:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2492:189:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2538:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2547:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2555:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2540:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2540:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2540:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2513:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2522:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2509:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2509:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2534:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2505:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2505:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2502:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2573:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2599:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2586:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2586:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2577:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2645:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2618:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2618:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2618:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2660:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2670:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2660:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2458:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2469:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2481:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2422:259:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2775:182:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2821:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2830:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "2838:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2823:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2823:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2823:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2796:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2805:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2792:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2792:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2817:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2788:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2788:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "2785:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2856:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2875:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2869:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2869:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "2860:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "2921:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2894:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2894:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2894:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2936:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2946:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2936:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2741:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2752:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2764:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2686:271:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3068:226:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3114:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3123:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3131:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3116:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3116:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3116:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3089:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3098:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3085:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3085:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3110:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3081:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3081:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3078:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3149:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3168:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3162:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3162:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3153:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3214:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3187:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3187:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3187:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3229:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3239:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3229:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3253:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3273:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3284:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3269:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3269:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3263:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3263:25:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3253:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payablet_uint256_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3026:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3037:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3049:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3057:6:33",
                            "type": ""
                          }
                        ],
                        "src": "2962:332:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3386:315:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3432:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3441:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "3449:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3434:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3434:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3434:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3407:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3416:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3403:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3403:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3428:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3399:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3399:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3396:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3467:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3493:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3480:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3480:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3471:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3539:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3512:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3512:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3512:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3554:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3564:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3554:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3578:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3610:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3621:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3606:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3606:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3593:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3593:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3582:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3661:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3634:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3634:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3634:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3678:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "3688:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3678:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3344:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3355:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3367:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3375:6:33",
                            "type": ""
                          }
                        ],
                        "src": "3299:402:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3917:1056:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3964:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3973:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "3981:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3966:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3966:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3966:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3938:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3947:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3934:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3934:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3959:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3930:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3930:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "3927:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3999:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4025:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4012:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4012:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4003:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "4071:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4044:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4044:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4044:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4086:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4096:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4086:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4110:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4142:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4153:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4138:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4138:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4125:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4125:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4114:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4193:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4166:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4166:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4166:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4210:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "4220:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "4210:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4236:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4267:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4278:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4263:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4263:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4250:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4250:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "4240:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4291:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4301:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4295:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4346:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4355:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4363:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4348:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4348:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4348:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4334:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4342:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4331:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4331:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4328:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4381:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4430:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4441:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4426:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4426:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4450:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4391:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4391:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "4381:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4467:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4500:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4511:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4496:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4496:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4483:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4483:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4471:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4544:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4553:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "4561:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4546:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4546:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4546:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4530:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4540:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4527:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4527:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4524:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4579:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4628:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4639:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4624:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4624:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4650:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "4589:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4589:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "4579:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4667:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4699:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4710:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4695:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4695:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4682:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4682:33:33"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4671:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4748:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "4724:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4724:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4724:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4765:17:33",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "4775:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "4765:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4791:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4824:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4835:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4820:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4820:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4807:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4807:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4795:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4869:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "4878:6:33"
                                        },
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "4886:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4871:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4871:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4871:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4855:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4865:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4852:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4852:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "4849:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4904:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4937:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "4948:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4933:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4933:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4959:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "4914:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4914:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "4904:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_boolt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3843:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3854:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3866:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3874:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "3882:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "3890:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "3898:6:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "3906:6:33",
                            "type": ""
                          }
                        ],
                        "src": "3706:1267:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5175:932:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5222:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5231:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5239:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5224:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5224:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5224:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "5196:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5205:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "5192:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5192:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "5217:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5188:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5188:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5185:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5257:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "5283:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5270:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5270:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "5261:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "5329:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5302:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5302:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5302:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5344:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "5354:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "5344:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5368:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5400:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5411:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5396:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5396:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5383:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5383:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5372:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5451:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5424:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5424:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5424:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5468:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "5478:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "5468:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5494:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5525:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5536:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5521:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5521:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5508:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5508:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "5498:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5549:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5559:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5553:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5604:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5613:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5621:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5606:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5606:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5606:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5592:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5600:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5589:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5589:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5586:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5639:77:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5688:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "5699:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5684:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5684:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5708:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "5649:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5649:67:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "5639:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5725:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5758:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5769:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5754:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5754:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5741:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5741:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5729:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5802:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5811:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "5819:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5804:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5804:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5804:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5788:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5798:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5785:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5785:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5782:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5837:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5886:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5897:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5882:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5882:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "5908:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "5847:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5847:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "5837:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5925:49:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5958:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5969:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5954:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5954:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5941:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5941:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5929:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6003:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "6012:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "6020:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6005:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6005:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6005:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5989:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5999:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5986:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5986:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "5983:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6038:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6071:9:33"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "6082:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6067:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6067:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6093:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6048:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6048:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "6038:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "5109:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "5120:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "5132:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "5140:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "5148:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "5156:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "5164:6:33",
                            "type": ""
                          }
                        ],
                        "src": "4978:1129:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6253:757:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6300:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "6309:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "6317:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6302:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6302:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6302:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "6274:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6283:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6270:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6270:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6295:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6266:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6266:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6263:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6335:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "6361:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6348:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6348:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "6339:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6407:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6380:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6380:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6380:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6422:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6432:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "6422:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6446:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6478:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6489:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6474:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6474:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6461:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6461:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6450:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6529:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "6502:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6502:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6502:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6546:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "6556:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "6546:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6572:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6604:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6615:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6600:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6600:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6587:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6587:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "6576:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6652:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "6628:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6628:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6628:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6669:17:33",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "6679:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "6669:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6695:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6727:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6738:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6723:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6723:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6710:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6710:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_3",
                                  "nodeType": "YulTypedName",
                                  "src": "6699:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "6751:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6751:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6751:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6792:17:33",
                              "value": {
                                "name": "value_3",
                                "nodeType": "YulIdentifier",
                                "src": "6802:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "6792:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6818:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6849:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6860:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6845:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6845:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6832:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6832:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6822:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6908:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "6917:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "6925:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6910:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6910:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6910:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6880:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6888:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6877:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6877:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "6874:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6943:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6976:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "6987:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6972:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6972:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6996:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "6953:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6953:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "6943:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_boolt_boolt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6187:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "6198:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "6210:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "6218:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "6226:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "6234:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "6242:6:33",
                            "type": ""
                          }
                        ],
                        "src": "6112:898:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7176:737:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7223:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7232:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "7240:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7225:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7225:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7225:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "7197:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7206:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "7193:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7193:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7218:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7189:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7189:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7186:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7258:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7284:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7271:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7271:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "7262:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "7330:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7303:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7303:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7303:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7345:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7355:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "7345:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7369:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7401:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7412:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7397:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7397:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7384:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7384:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "7373:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7452:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "7425:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7425:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7425:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7469:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "7479:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "7469:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7495:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7522:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7533:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7518:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7518:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7505:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7505:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "7495:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7546:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7573:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7584:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7569:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7569:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7556:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7556:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "7546:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7597:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7629:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7640:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7625:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7625:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7612:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7612:33:33"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7601:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7678:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "7654:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7654:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7654:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7695:17:33",
                              "value": {
                                "name": "value_2",
                                "nodeType": "YulIdentifier",
                                "src": "7705:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "7695:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7721:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7752:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7763:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7748:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7748:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7735:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7735:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "7725:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7811:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "7820:6:33"
                                        },
                                        {
                                          "name": "value5",
                                          "nodeType": "YulIdentifier",
                                          "src": "7828:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7813:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7813:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7813:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7783:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7791:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7780:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7780:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "7777:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7846:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7879:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "7890:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7875:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7875:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "7899:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7856:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7856:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "7846:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_boolt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7102:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "7113:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7125:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7133:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7141:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7149:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7157:6:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "7165:6:33",
                            "type": ""
                          }
                        ],
                        "src": "7015:898:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8065:613:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8112:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8121:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "8129:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8114:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8114:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8114:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8086:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8095:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8082:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8082:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8107:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8078:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8078:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8075:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8147:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8173:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8160:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8160:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8151:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8219:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8192:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8192:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8192:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8234:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8244:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8234:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8258:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8290:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8301:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8286:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8286:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8273:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8273:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8262:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8341:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8314:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8314:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8314:35:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8358:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "8368:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "8358:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8384:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8411:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8422:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8407:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8407:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8394:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8394:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "8384:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8435:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8462:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8473:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8458:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8458:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8445:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8445:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "8435:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8486:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8517:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8528:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8513:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8513:19:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8500:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8500:33:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8490:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8576:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8585:6:33"
                                        },
                                        {
                                          "name": "value4",
                                          "nodeType": "YulIdentifier",
                                          "src": "8593:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8578:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8578:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8578:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8548:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8556:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8545:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8545:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8542:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8611:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8644:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8655:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8640:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8640:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "8664:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "8621:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8621:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "8611:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7999:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8010:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8022:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8030:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "8038:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "8046:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "8054:6:33",
                            "type": ""
                          }
                        ],
                        "src": "7918:760:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8767:312:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8813:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8822:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "8830:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8815:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8815:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8815:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "8788:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8797:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8784:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8784:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8809:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8780:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8780:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "8777:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8848:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8874:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8861:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8861:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "8852:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8920:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "8893:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8893:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8893:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8935:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "8945:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "8935:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8959:47:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8991:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9002:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8987:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8987:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8974:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8974:32:33"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8963:7:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9039:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "9015:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9015:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9015:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9056:17:33",
                              "value": {
                                "name": "value_1",
                                "nodeType": "YulIdentifier",
                                "src": "9066:7:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9056:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8725:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "8736:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "8748:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "8756:6:33",
                            "type": ""
                          }
                        ],
                        "src": "8683:396:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9223:640:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9270:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9279:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9287:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9272:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9272:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9272:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9244:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9253:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9240:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9240:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9265:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9236:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9236:33:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9233:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9305:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "9331:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9318:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9318:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "9309:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "9377:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "9350:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9350:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9350:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9392:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "9402:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "9392:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9416:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9443:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9454:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9439:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9439:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9426:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9426:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "9416:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9467:46:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9498:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9509:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9494:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9494:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9481:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9481:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "9471:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9522:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9532:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9526:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9577:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9586:6:33"
                                        },
                                        {
                                          "name": "value2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9594:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9579:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9579:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9579:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9565:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9573:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9562:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9562:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9559:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9612:61:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9645:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9656:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9641:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9641:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9665:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9622:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9622:51:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "9612:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9682:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9715:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9726:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9711:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9711:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9698:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9698:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9686:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9759:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "9768:6:33"
                                        },
                                        {
                                          "name": "value3",
                                          "nodeType": "YulIdentifier",
                                          "src": "9776:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9761:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9761:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9761:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9745:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9755:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9742:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9742:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9739:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9794:63:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9827:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9838:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9823:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9823:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9849:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "9804:18:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9804:53:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "9794:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bytes32t_bytes_memory_ptrt_bytes_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9165:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9176:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9188:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9196:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "9204:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "9212:6:33",
                            "type": ""
                          }
                        ],
                        "src": "9084:779:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9955:240:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10001:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10010:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10018:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10003:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10003:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10003:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "9976:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9985:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "9972:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9972:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9997:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9968:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9968:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "9965:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10036:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10062:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10049:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10049:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "10040:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "10108:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "10081:26:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10081:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10081:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10123:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "10133:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "10123:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10147:42:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10174:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10185:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10170:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10170:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10157:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10157:32:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "10147:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "9913:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "9924:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "9936:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "9944:6:33",
                            "type": ""
                          }
                        ],
                        "src": "9868:327:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10337:1178:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10383:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10392:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10400:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10385:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10385:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10385:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10358:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "10367:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "10354:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10354:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10379:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10350:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10350:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10347:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10418:37:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10445:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10432:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10432:23:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "10422:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10464:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10474:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10468:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10519:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10528:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10536:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10521:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10521:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10521:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10507:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "10515:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10504:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10504:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10501:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10554:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "10568:9:33"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10579:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10564:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10564:22:33"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "10558:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10634:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10643:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10651:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10636:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10636:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10636:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "10613:2:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10617:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10609:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10609:13:33"
                                      },
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "10624:7:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10605:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10605:27:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10598:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10598:35:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10595:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10669:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10696:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10683:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10683:16:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "10673:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10708:80:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "10780:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_t_array$_t_address_$dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "10734:45:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10734:53:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocateMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "10719:14:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10719:69:33"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "10712:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10797:16:33",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "10810:3:33"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "10801:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "10829:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10834:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10822:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10822:19:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10822:19:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10850:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "10860:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "10854:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10873:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "10884:3:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "10889:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10880:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10880:12:33"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "10873:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10901:22:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "10916:2:33"
                                  },
                                  {
                                    "name": "_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "10920:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10912:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10912:11:33"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "10905:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10982:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10991:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "10999:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10984:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10984:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10984:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "10946:2:33"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "10954:6:33"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "10962:2:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "10950:3:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10950:15:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10942:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10942:24:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "10968:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10938:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10938:33:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "10973:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10935:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10935:46:33"
                              },
                              "nodeType": "YulIf",
                              "src": "10932:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11017:15:33",
                              "value": {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "11026:6:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "11021:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11090:195:33",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11104:30:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "11130:3:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "11117:12:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11117:17:33"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "11108:5:33",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "11174:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "validator_revert_t_address",
                                        "nodeType": "YulIdentifier",
                                        "src": "11147:26:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11147:33:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11147:33:33"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "11200:3:33"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "11205:5:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "11193:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11193:18:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11193:18:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11224:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "11235:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "11240:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11231:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11231:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "11224:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11256:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "11267:3:33"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "11272:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11263:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11263:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "11256:3:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "11052:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11055:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11049:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11049:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "11063:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11065:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "11074:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11077:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11070:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11070:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "11065:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "11045:3:33",
                                "statements": []
                              },
                              "src": "11041:244:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11294:15:33",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "11304:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11294:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11318:48:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11351:9:33"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "11362:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11347:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11347:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11334:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11334:32:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11322:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11395:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11404:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "11412:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11397:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11397:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11397:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11381:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11391:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11378:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11378:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11375:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11430:79:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11479:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11490:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11475:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11475:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11501:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_array$_t_uint256_$dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "11440:34:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11440:69:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11430:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10295:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10306:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10318:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10326:6:33",
                            "type": ""
                          }
                        ],
                        "src": "10200:1315:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11598:179:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11644:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11653:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11661:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11646:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11646:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11646:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11619:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11628:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11615:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11615:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11640:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11611:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11611:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11608:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11679:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11698:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11692:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11692:16:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11683:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "11741:5:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_t_bool",
                                  "nodeType": "YulIdentifier",
                                  "src": "11717:23:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11717:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11717:30:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11756:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "11766:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11756:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bool_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11564:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11575:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11587:6:33",
                            "type": ""
                          }
                        ],
                        "src": "11520:257:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11851:283:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11897:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11906:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "11914:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11899:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11899:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11899:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11872:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11881:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11868:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11868:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11893:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11864:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11864:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11861:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11932:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11958:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11945:12:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11945:23:33"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "11936:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12078:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12087:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12095:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12080:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12080:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12080:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "11990:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "12001:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12008:66:33",
                                            "type": "",
                                            "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "11997:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11997:78:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "11987:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11987:89:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11980:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11980:97:33"
                              },
                              "nodeType": "YulIf",
                              "src": "11977:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12113:15:33",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12123:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12113:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes4",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "11817:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "11828:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "11840:6:33",
                            "type": ""
                          }
                        ],
                        "src": "11782:352:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12255:476:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12301:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12310:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12318:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12303:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12303:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12303:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12276:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12285:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12272:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12272:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12297:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12268:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12268:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12265:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12336:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12356:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12350:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12350:16:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12340:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12375:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12385:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12379:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12430:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12439:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12447:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12432:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12432:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12432:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12418:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12426:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12415:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12415:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12412:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12465:72:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12509:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "12520:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12505:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12505:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12529:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "12475:29:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12475:62:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "12465:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12546:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12572:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12583:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12568:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12568:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12562:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12562:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12550:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12616:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12625:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "12633:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12618:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12618:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12618:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12602:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12612:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12599:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12599:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12596:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12651:74:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12695:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12706:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12691:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12691:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "12717:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "12661:29:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12661:64:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "12651:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12213:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12224:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12236:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "12244:6:33",
                            "type": ""
                          }
                        ],
                        "src": "12139:592:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12845:280:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12891:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12900:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "12908:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "12893:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12893:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12893:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "12866:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "12875:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "12862:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12862:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12887:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12858:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12858:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12855:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12926:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "12946:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12940:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12940:16:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "12930:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12999:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13008:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13016:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13001:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13001:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13001:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "12971:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12979:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12968:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12968:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "12965:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13034:85:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13091:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "13102:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13087:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13087:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13111:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_struct$_GasReceipt_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13044:42:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13044:75:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13034:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "12811:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "12822:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "12834:6:33",
                            "type": ""
                          }
                        ],
                        "src": "12736:389:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13265:489:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13311:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13320:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13328:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13313:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13313:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13313:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13286:7:33"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13295:9:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13282:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13282:23:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13307:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13278:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13278:32:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13275:2:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13346:30:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13366:9:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13360:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13360:16:33"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "13350:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13385:28:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13395:18:33",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13389:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13440:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13449:6:33"
                                        },
                                        {
                                          "name": "value0",
                                          "nodeType": "YulIdentifier",
                                          "src": "13457:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13442:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13442:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13442:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13428:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13436:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13425:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13425:14:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13422:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13475:85:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13532:9:33"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "13543:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13528:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13528:22:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13552:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_struct$_GasReceipt_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13485:42:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13485:75:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "13475:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13569:41:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13595:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13606:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13591:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13591:18:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13585:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13585:25:33"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13573:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13639:26:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13648:6:33"
                                        },
                                        {
                                          "name": "value1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13656:6:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13641:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13641:22:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13641:22:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13625:8:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "13635:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13622:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13622:16:33"
                              },
                              "nodeType": "YulIf",
                              "src": "13619:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13674:74:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13718:9:33"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13729:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13714:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13714:24:33"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "13740:7:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_t_bytes_fromMemory",
                                  "nodeType": "YulIdentifier",
                                  "src": "13684:29:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13684:64:33"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13674:6:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptrt_bytes_memory_ptr_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13223:9:33",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13234:7:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13246:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "13254:6:33",
                            "type": ""
                          }
                        ],
                        "src": "13130:624:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13928:376:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13938:16:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "13951:3:33"
                              },
                              "variables": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13942:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13963:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13983:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13977:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13977:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "13967:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13999:12:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "14008:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "13999:5:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14020:14:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14030:4:33",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14024:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14043:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14061:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14069:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14057:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14057:15:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "14047:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14081:12:33",
                              "value": {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "14090:3:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "14085:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14151:126:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14172:5:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "14185:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "14179:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14179:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14165:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14165:28:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14165:28:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14206:23:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14219:5:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14226:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14215:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14215:14:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14206:5:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14242:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "14256:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "14264:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14252:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14252:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "14242:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "14113:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "14116:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14110:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14110:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "14124:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14126:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "14135:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14138:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14131:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14131:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "14126:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "14106:3:33",
                                "statements": []
                              },
                              "src": "14102:175:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14286:12:33",
                              "value": {
                                "name": "pos_1",
                                "nodeType": "YulIdentifier",
                                "src": "14293:5:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "14286:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "13904:3:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13909:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "13920:3:33",
                            "type": ""
                          }
                        ],
                        "src": "13759:545:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14502:244:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14512:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14532:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14526:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14526:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "14516:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "14574:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14582:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14570:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14570:17:33"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "14589:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "14594:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "14548:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14548:53:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14548:53:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14610:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "14627:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "14632:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14623:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14623:16:33"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14614:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14655:5:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14662:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14648:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14648:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14648:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "14689:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "14696:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14685:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14685:16:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "14703:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14678:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14678:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14678:32:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14719:21:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "14730:5:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14737:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14726:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14726:14:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "14719:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes32__to_t_bytes_memory_ptr_t_uint256_t_bytes32__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "14462:3:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14467:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14475:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14483:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "14494:3:33",
                            "type": ""
                          }
                        ],
                        "src": "14309:437:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14962:335:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14972:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14992:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14986:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14986:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "14976:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15034:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15042:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15030:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15030:17:33"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "15049:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15054:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "15008:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15008:53:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15008:53:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15070:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "15087:3:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "15092:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15083:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15083:16:33"
                              },
                              "variables": [
                                {
                                  "name": "end_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15074:5:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "end_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15115:5:33"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15122:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15108:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15108:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15108:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15138:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15160:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15154:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15154:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15142:8:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "15202:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15210:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15198:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15198:17:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15221:5:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15228:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15217:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15217:16:33"
                                  },
                                  {
                                    "name": "length_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15235:8:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "copy_memory_to_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "15176:21:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15176:68:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15176:68:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15253:38:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15268:5:33"
                                      },
                                      {
                                        "name": "length_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15275:8:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15264:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15264:20:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15286:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15260:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15260:31:33"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "15253:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "14922:3:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "14927:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14935:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14943:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "14954:3:33",
                            "type": ""
                          }
                        ],
                        "src": "14751:546:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15459:241:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "15469:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15481:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15492:2:33",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "15477:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15477:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "15469:4:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15504:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15514:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15508:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15572:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "15587:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15595:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15583:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15583:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15565:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15565:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15565:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15619:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15630:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15615:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15615:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15639:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15647:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "15635:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15635:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15608:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15608:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15608:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15671:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15682:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15667:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15667:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "15687:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "15660:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15660:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "15660:34:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15412:9:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15423:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15431:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15439:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15450:4:33",
                            "type": ""
                          }
                        ],
                        "src": "15302:398:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15990:368:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16000:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16010:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16004:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16068:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "16083:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16091:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16079:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16079:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16061:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16061:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16061:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16115:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16126:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16111:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16111:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16135:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16143:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "16131:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16131:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16104:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16104:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16104:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16167:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16178:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16163:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16163:18:33"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "16183:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16156:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16156:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16156:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16210:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16221:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16206:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16206:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "16226:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16199:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16199:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16199:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16253:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16264:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16249:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16249:19:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16270:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16242:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16242:32:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16242:32:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16294:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16305:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16290:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16290:19:33"
                                  },
                                  {
                                    "name": "tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "16311:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16283:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16283:33:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16283:33:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16325:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16337:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16348:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16333:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16333:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16325:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15935:9:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "15946:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15954:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15962:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15970:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "15981:4:33",
                            "type": ""
                          }
                        ],
                        "src": "15705:653:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16514:484:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16524:12:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16534:2:33",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16528:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16545:32:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16563:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16574:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16559:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16559:18:33"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16549:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16593:9:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16604:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16586:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16586:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16586:21:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16616:17:33",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "16627:6:33"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "16620:3:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16642:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16662:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16656:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16656:13:33"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "16646:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16685:6:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16693:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16678:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16678:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16678:22:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16709:25:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16720:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16731:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16716:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16716:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "16709:3:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16743:29:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16761:6:33"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16769:2:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16757:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16757:15:33"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "16747:6:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16781:13:33",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "16790:4:33"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "16785:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16852:120:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "16873:3:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "16884:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "16878:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "16878:13:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "16866:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16866:26:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16866:26:33"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "16905:19:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "16916:3:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16921:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "16912:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16912:12:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "16905:3:33"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "16937:25:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "16951:6:33"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "16959:2:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "16947:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16947:15:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "16937:6:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "16814:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "16817:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16811:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16811:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "16825:18:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "16827:14:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "16836:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16839:1:33",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "16832:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16832:9:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "16827:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "16807:3:33",
                                "statements": []
                              },
                              "src": "16803:169:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16981:11:33",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "16989:3:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "16981:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16483:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16494:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "16505:4:33",
                            "type": ""
                          }
                        ],
                        "src": "16363:635:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17098:92:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17108:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17120:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17131:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17116:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17116:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17108:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17150:9:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "17175:6:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "17168:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17168:14:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "17161:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17161:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17143:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17143:41:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17143:41:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17067:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17078:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17089:4:33",
                            "type": ""
                          }
                        ],
                        "src": "17003:187:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17436:373:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17446:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17458:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17469:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "17454:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17454:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "17446:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17489:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "17500:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17482:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17482:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17482:25:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17516:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17526:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17520:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17588:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17599:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17584:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17584:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17608:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17616:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17604:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17604:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17577:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17577:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17577:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17640:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17651:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17636:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17636:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "17660:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "17668:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "17656:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17656:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17629:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17629:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17629:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17692:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17703:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17688:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17688:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "17708:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17681:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17681:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17681:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17735:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17746:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17731:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17731:19:33"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "17752:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17724:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17724:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17724:35:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17779:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17790:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17775:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17775:19:33"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "17796:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "17768:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17768:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "17768:35:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17365:9:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "17376:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "17384:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "17392:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17400:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17408:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17416:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "17427:4:33",
                            "type": ""
                          }
                        ],
                        "src": "17195:614:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18027:329:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18037:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18049:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18060:3:33",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18045:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18045:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18037:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18080:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18091:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18073:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18073:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18073:25:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18107:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18117:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18111:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18179:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18190:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18175:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18175:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18199:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18207:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18195:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18195:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18168:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18168:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18168:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18231:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18242:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18227:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18227:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18251:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18259:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18247:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18247:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18220:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18220:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18220:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18283:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18294:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18279:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18279:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "18299:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18272:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18272:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18272:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18326:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18337:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18322:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18322:19:33"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "18343:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18315:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18315:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18315:35:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17964:9:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "17975:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "17983:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17991:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17999:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18007:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18018:4:33",
                            "type": ""
                          }
                        ],
                        "src": "17814:542:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18602:373:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18612:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18624:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18635:3:33",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18620:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18620:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "18612:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18655:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18666:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18648:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18648:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18648:25:33"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18682:52:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "18692:42:33",
                                "type": "",
                                "value": "0xffffffffffffffffffffffffffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18686:2:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18754:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18765:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18750:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18750:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18774:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18782:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18770:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18770:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18743:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18743:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18743:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18806:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18817:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18802:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18802:18:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18826:6:33"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18834:2:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18822:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18822:15:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18795:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18795:43:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18795:43:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18858:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18869:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18854:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18854:18:33"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "18874:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18847:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18847:34:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18847:34:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18901:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18912:3:33",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18897:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18897:19:33"
                                  },
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "18918:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18890:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18890:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18890:35:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18945:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18956:3:33",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18941:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18941:19:33"
                                  },
                                  {
                                    "name": "value5",
                                    "nodeType": "YulIdentifier",
                                    "src": "18962:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18934:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18934:35:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18934:35:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18531:9:33",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "18542:6:33",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "18550:6:33",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "18558:6:33",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "18566:6:33",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18574:6:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18582:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18593:4:33",
                            "type": ""
                          }
                        ],
                        "src": "18361:614:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19154:241:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19171:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19182:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19164:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19164:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19164:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19205:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19216:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19201:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19201:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19221:2:33",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19194:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19194:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19194:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19244:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19255:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19240:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19240:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19260:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#metaSafeTransferFrom"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19233:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19233:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19233:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19315:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19326:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19311:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19311:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19331:21:33",
                                    "type": "",
                                    "value": ": INVALID_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19304:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19304:49:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19304:49:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19362:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19374:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19385:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19370:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19370:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19362:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_61f5777e4201d0cacc6b01e4df7af612fe611d3e31e7f11d609bf3a8c318735e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19131:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19145:4:33",
                            "type": ""
                          }
                        ],
                        "src": "18980:415:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19574:241:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19591:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19602:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19584:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19584:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19584:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19625:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19636:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19621:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19621:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19641:2:33",
                                    "type": "",
                                    "value": "51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19614:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19614:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19614:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19664:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19675:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19660:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19660:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19680:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_signatureValidation"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19653:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19653:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19653:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19735:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19746:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19731:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19731:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "19751:21:33",
                                    "type": "",
                                    "value": ": INVALID_SIGNATURE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19724:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19724:49:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19724:49:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19782:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19794:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19805:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19790:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19790:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19782:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_6d3eb5c55a58dcdb83f34d1ad1e9a04e3cf6fabf83d70f1a41fc7973311b6fd4__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19551:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19565:4:33",
                            "type": ""
                          }
                        ],
                        "src": "19400:415:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19994:240:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20011:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20022:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20004:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20004:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20004:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20045:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20056:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20041:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20041:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20061:2:33",
                                    "type": "",
                                    "value": "50"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20034:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20034:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20034:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20084:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20095:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20080:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20080:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20100:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_transferGasFee: ERC"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20073:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20073:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20073:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20155:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20166:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20151:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20151:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20171:20:33",
                                    "type": "",
                                    "value": "20_TRANSFER_FAILED"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20144:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20144:48:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20144:48:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20201:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20213:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20224:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20209:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20209:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20201:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_a4c4f8821c7e12dec6fe310a34d8ff084ce99b654e4106a50c39bdfc34cbf202__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19971:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19985:4:33",
                            "type": ""
                          }
                        ],
                        "src": "19820:414:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20413:246:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20430:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20441:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20423:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20423:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20423:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20464:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20475:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20460:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20460:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20480:2:33",
                                    "type": "",
                                    "value": "56"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20453:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20453:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20453:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20503:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20514:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20499:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20499:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20519:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#metaSafeBatchTransfe"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20492:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20492:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20492:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20574:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20585:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20570:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20570:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20590:26:33",
                                    "type": "",
                                    "value": "rFrom: INVALID_RECIPIENT"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20563:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20563:54:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20563:54:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20626:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20638:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20649:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20634:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20634:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "20626:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_c35c815541f857ca65052edde63901642b7e03e43bf83eec95218f874a8fdd62__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20390:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20404:4:33",
                            "type": ""
                          }
                        ],
                        "src": "20239:420:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20838:237:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20855:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20866:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20848:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20848:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20848:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20889:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20900:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20885:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20885:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20905:2:33",
                                    "type": "",
                                    "value": "47"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20878:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20878:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20878:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20928:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "20939:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20924:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20924:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "20944:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_signatureValidation"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20917:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20917:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20917:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20999:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21010:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "20995:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20995:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21015:17:33",
                                    "type": "",
                                    "value": ": INVALID_NONCE"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20988:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20988:45:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20988:45:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21042:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21054:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21065:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21050:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21050:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21042:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ff42cead1b7c6f0abed83c5e256b3e3ae18800a9206b9735befc73357d914de5__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20815:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "20829:4:33",
                            "type": ""
                          }
                        ],
                        "src": "20664:411:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21254:236:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21271:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21282:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21264:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21264:21:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21264:21:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21305:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21316:2:33",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21301:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21301:18:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21321:2:33",
                                    "type": "",
                                    "value": "46"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21294:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21294:30:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21294:30:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21344:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21355:2:33",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21340:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21340:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21360:34:33",
                                    "type": "",
                                    "value": "ERC1155Meta#_transferGasFee: UNS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21333:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21333:62:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21333:62:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21415:9:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21426:2:33",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21411:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21411:18:33"
                                  },
                                  {
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "21431:16:33",
                                    "type": "",
                                    "value": "UPPORTED_TOKEN"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21404:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21404:44:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21404:44:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21457:27:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21469:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21480:3:33",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21465:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21465:19:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21457:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_ff7a2afde0cf20930776bc6456716ff6f86d3807496d5fb53db8b79cc341816a__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21231:9:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21245:4:33",
                            "type": ""
                          }
                        ],
                        "src": "21080:410:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21596:76:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21606:26:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21618:9:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21629:2:33",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21614:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21614:18:33"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "21606:4:33"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "21648:9:33"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "21659:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21641:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21641:25:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21641:25:33"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "21565:9:33",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "21576:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "21587:4:33",
                            "type": ""
                          }
                        ],
                        "src": "21495:177:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21721:198:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21731:19:33",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21747:2:33",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21741:5:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21741:9:33"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "21731:6:33"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21759:35:33",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "21781:6:33"
                                  },
                                  {
                                    "name": "size",
                                    "nodeType": "YulIdentifier",
                                    "src": "21789:4:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21777:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21777:17:33"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "21763:10:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21869:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "21871:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21871:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21871:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21812:10:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21824:18:33",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "21809:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21809:34:33"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21848:10:33"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21860:6:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "21845:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21845:22:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "21806:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21806:62:33"
                              },
                              "nodeType": "YulIf",
                              "src": "21803:2:33"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21898:2:33",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "21902:10:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "21891:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21891:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "21891:22:33"
                            }
                          ]
                        },
                        "name": "allocateMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "21701:4:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "21710:6:33",
                            "type": ""
                          }
                        ],
                        "src": "21677:242:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "21999:108:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22043:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "22045:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22045:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22045:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "22015:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22023:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22012:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22012:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "22009:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22065:36:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "22081:6:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22089:4:33",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "22077:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22077:17:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22096:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22073:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22073:28:33"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "22065:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_t_array$_t_address_$dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "21979:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "21990:4:33",
                            "type": ""
                          }
                        ],
                        "src": "21924:183:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22171:181:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22215:13:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "invalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "22217:7:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22217:9:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22217:9:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "22187:6:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22195:18:33",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22184:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22184:30:33"
                              },
                              "nodeType": "YulIf",
                              "src": "22181:2:33"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22237:109:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "22257:6:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22265:4:33",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22253:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22253:17:33"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "22272:66:33",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "22249:3:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22249:90:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22341:4:33",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22245:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22245:101:33"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "22237:4:33"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_t_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "22151:6:33",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "22162:4:33",
                            "type": ""
                          }
                        ],
                        "src": "22112:240:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22410:205:33",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22420:10:33",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22429:1:33",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "22424:1:33",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22489:63:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "22514:3:33"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "22519:1:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "22510:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22510:11:33"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "src",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22533:3:33"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22538:1:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "22529:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "22529:11:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "22523:5:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22523:18:33"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "22503:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22503:39:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22503:39:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "22450:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "22453:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22447:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22447:13:33"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "22461:19:33",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "22463:15:33",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "22472:1:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22475:2:33",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "22468:3:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22468:10:33"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "22463:1:33"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "22443:3:33",
                                "statements": []
                              },
                              "src": "22439:113:33"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22578:31:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "dst",
                                              "nodeType": "YulIdentifier",
                                              "src": "22591:3:33"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "22596:6:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "22587:3:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22587:16:33"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22605:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "22580:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22580:27:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22580:27:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "22567:1:33"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "22570:6:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22564:2:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22564:13:33"
                              },
                              "nodeType": "YulIf",
                              "src": "22561:2:33"
                            }
                          ]
                        },
                        "name": "copy_memory_to_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "src",
                            "nodeType": "YulTypedName",
                            "src": "22388:3:33",
                            "type": ""
                          },
                          {
                            "name": "dst",
                            "nodeType": "YulTypedName",
                            "src": "22393:3:33",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "22398:6:33",
                            "type": ""
                          }
                        ],
                        "src": "22357:258:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22667:109:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22754:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22763:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22766:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22756:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22756:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22756:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22690:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "22701:5:33"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "22708:42:33",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "22697:3:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22697:54:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "22687:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22687:65:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "22680:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22680:73:33"
                              },
                              "nodeType": "YulIf",
                              "src": "22677:2:33"
                            }
                          ]
                        },
                        "name": "validator_revert_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "22656:5:33",
                            "type": ""
                          }
                        ],
                        "src": "22620:156:33"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22825:76:33",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22879:16:33",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22888:1:33",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22891:1:33",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22881:6:33"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22881:12:33"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22881:12:33"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "22848:5:33"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "22869:5:33"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "22862:6:33"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "22862:13:33"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "22855:6:33"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22855:21:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "22845:2:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22845:32:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "22838:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22838:40:33"
                              },
                              "nodeType": "YulIf",
                              "src": "22835:2:33"
                            }
                          ]
                        },
                        "name": "validator_revert_t_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "22814:5:33",
                            "type": ""
                          }
                        ],
                        "src": "22781:120:33"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_t_array$_t_uint256_$dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst := array\n        mstore(array, length)\n        let _1 := 0x20\n        dst := add(array, _1)\n        let src := add(offset, _1)\n        if gt(add(add(offset, mul(length, _1)), _1), end) { revert(0, 0) }\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(dst, calldataload(src))\n            dst := add(dst, _1)\n            src := add(src, _1)\n        }\n    }\n    function abi_decode_t_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_bytes(length))\n        mstore(array, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array, 0x20), add(offset, 0x20), length)\n        mstore(add(add(array, length), 0x20), 0)\n    }\n    function abi_decode_t_bytes_fromMemory(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let length := mload(offset)\n        array := allocateMemory(array_allocation_size_t_bytes(length))\n        mstore(array, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        copy_memory_to_memory(add(offset, 0x20), add(array, 0x20), length)\n    }\n    function abi_decode_t_struct$_GasReceipt_fromMemory(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x80) { revert(value, value) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x80)\n        let _1 := 0xffffffffffffffff\n        if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        mstore(memPtr, mload(headStart))\n        mstore(add(memPtr, 32), mload(add(headStart, 32)))\n        let value_1 := mload(add(headStart, 64))\n        validator_revert_t_address(value_1)\n        mstore(add(memPtr, 64), value_1)\n        let offset := mload(add(headStart, 96))\n        if gt(offset, _1) { revert(0, 0) }\n        mstore(add(memPtr, 96), abi_decode_t_bytes_fromMemory(add(headStart, offset), end))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_payablet_uint256_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let value := mload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_boolt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let value_2 := calldataload(add(headStart, 128))\n        validator_revert_t_bool(value_2)\n        value4 := value_2\n        let offset_2 := calldataload(add(headStart, 160))\n        if gt(offset_2, _1) { revert(value5, value5) }\n        value5 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_array$_t_uint256_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value2 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value3 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_boolt_boolt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value4, value4) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        let value_2 := calldataload(add(headStart, 64))\n        validator_revert_t_bool(value_2)\n        value2 := value_2\n        let value_3 := calldataload(add(headStart, 96))\n        validator_revert_t_bool(value_3)\n        value3 := value_3\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_boolt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let value_2 := calldataload(add(headStart, 128))\n        validator_revert_t_bool(value_2)\n        value4 := value_2\n        let offset := calldataload(add(headStart, 160))\n        if gt(offset, 0xffffffffffffffff) { revert(value5, value5) }\n        value5 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_addresst_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_address(value_1)\n        value1 := value_1\n        value2 := calldataload(add(headStart, 64))\n        value3 := calldataload(add(headStart, 96))\n        let offset := calldataload(add(headStart, 128))\n        if gt(offset, 0xffffffffffffffff) { revert(value4, value4) }\n        value4 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_t_bool(value_1)\n        value1 := value_1\n    }\n    function abi_decode_tuple_t_addresst_bytes32t_bytes_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value2 := abi_decode_t_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(value3, value3) }\n        value3 := abi_decode_t_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_t_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_address_$dyn_memory_ptrt_array$_t_uint256_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        let _2 := add(headStart, offset)\n        if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(value0, value0) }\n        let length := calldataload(_2)\n        let dst := allocateMemory(array_allocation_size_t_array$_t_address_$dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _3 := 0x20\n        dst := add(dst, _3)\n        let src := add(_2, _3)\n        if gt(add(add(_2, mul(length, _3)), _3), dataEnd) { revert(value0, value0) }\n        let i := value0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let value := calldataload(src)\n            validator_revert_t_address(value)\n            mstore(dst, value)\n            dst := add(dst, _3)\n            src := add(src, _3)\n        }\n        value0 := dst_1\n        let offset_1 := calldataload(add(headStart, _3))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_array$_t_uint256_$dyn(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_t_bool(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffff00000000000000000000000000000000000000000000000000000000))) { revert(value0, value0) }\n        value0 := value\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        value0 := abi_decode_t_bytes_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_bytes_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := mload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_GasReceipt_fromMemory(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_struct$_GasReceipt_$4837_memory_ptrt_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := mload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        value0 := abi_decode_t_struct$_GasReceipt_fromMemory(add(headStart, offset), dataEnd)\n        let offset_1 := mload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_t_bytes_fromMemory(add(headStart, offset_1), dataEnd)\n    }\n    function abi_encode_tuple_packed_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let pos_1 := pos\n        let length := mload(value0)\n        pos_1 := pos\n        let _1 := 0x20\n        let srcPtr := add(value0, _1)\n        let i := end\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos_1, mload(srcPtr))\n            pos_1 := add(pos_1, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos_1\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes32__to_t_bytes_memory_ptr_t_uint256_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        mstore(end_1, value1)\n        mstore(add(end_1, 0x20), value2)\n        end := add(end_1, 64)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_uint256_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        let end_1 := add(pos, length)\n        mstore(end_1, value1)\n        let length_1 := mload(value2)\n        copy_memory_to_memory(add(value2, 0x20), add(end_1, 0x20), length_1)\n        end := add(add(end_1, length_1), 0x20)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n    }\n    function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_address_t_uint256_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), 160)\n        mstore(add(headStart, 160), tail)\n        tail := add(headStart, 192)\n    }\n    function abi_encode_tuple_t_array$_t_uint256_$dyn_memory_ptr__to_t_array$_t_uint256_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 64)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_address_t_address_t_bytes32_t_bytes32_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 192)\n        mstore(headStart, value0)\n        let _1 := 0xffffffffffffffffffffffffffffffffffffffff\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), value4)\n        mstore(add(headStart, 160), value5)\n    }\n    function abi_encode_tuple_t_stringliteral_61f5777e4201d0cacc6b01e4df7af612fe611d3e31e7f11d609bf3a8c318735e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"ERC1155Meta#metaSafeTransferFrom\")\n        mstore(add(headStart, 96), \": INVALID_RECIPIENT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6d3eb5c55a58dcdb83f34d1ad1e9a04e3cf6fabf83d70f1a41fc7973311b6fd4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 51)\n        mstore(add(headStart, 64), \"ERC1155Meta#_signatureValidation\")\n        mstore(add(headStart, 96), \": INVALID_SIGNATURE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_a4c4f8821c7e12dec6fe310a34d8ff084ce99b654e4106a50c39bdfc34cbf202__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 50)\n        mstore(add(headStart, 64), \"ERC1155Meta#_transferGasFee: ERC\")\n        mstore(add(headStart, 96), \"20_TRANSFER_FAILED\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c35c815541f857ca65052edde63901642b7e03e43bf83eec95218f874a8fdd62__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 56)\n        mstore(add(headStart, 64), \"ERC1155Meta#metaSafeBatchTransfe\")\n        mstore(add(headStart, 96), \"rFrom: INVALID_RECIPIENT\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ff42cead1b7c6f0abed83c5e256b3e3ae18800a9206b9735befc73357d914de5__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 47)\n        mstore(add(headStart, 64), \"ERC1155Meta#_signatureValidation\")\n        mstore(add(headStart, 96), \": INVALID_NONCE\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_ff7a2afde0cf20930776bc6456716ff6f86d3807496d5fb53db8b79cc341816a__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"ERC1155Meta#_transferGasFee: UNS\")\n        mstore(add(headStart, 96), \"UPPORTED_TOKEN\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function allocateMemory(size) -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { invalid() }\n        mstore(64, newFreePtr)\n    }\n    function array_allocation_size_t_array$_t_address_$dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(mul(length, 0x20), 0x20)\n    }\n    function array_allocation_size_t_bytes(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { invalid() }\n        size := add(and(add(length, 0x1f), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0), 0x20)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function validator_revert_t_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function validator_revert_t_bool(value)\n    {\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n    }\n}",
                  "id": 33,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100d35760003560e01c8063a3d4926e11610081578063f242432a1161005b578063f242432a146101b5578063f5d4c820146101c8578063fa4e12d7146101db576100d3565b8063a3d4926e1461017c578063ce0b514b1461018f578063e985e9c5146101a2576100d3565b80632eb2c2d6116100b25780632eb2c2d6146101345780634e1273f414610149578063a22cb46514610169576100d3565b8062fdd58e146100d857806301ffc9a7146101015780632d0335ab14610121575b600080fd5b6100eb6100e6366004612907565b6101ee565b6040516100f89190612f14565b60405180910390f35b61011461010f366004612a11565b610221565b6040516100f89190612c5e565b6100eb61012f36600461250d565b610286565b610147610142366004612667565b6102ae565b005b61015c610157366004612932565b6103b9565b6040516100f89190612c1a565b61014761017736600461285d565b610505565b61014761018a3660046125aa565b61059e565b61014761019d36600461278a565b61071b565b6101146101b0366004612572565b6107fa565b6101476101c3366004612802565b610835565b6101476101d6366004612711565b610939565b6101146101e936600461288a565b610a69565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000141561027557506001610281565b61027e8261124a565b90505b919050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205490565b3373ffffffffffffffffffffffffffffffffffffffff861614806102d757506102d785336107fa565b61032c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f8152602001806131fa602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061316b6030913960400191505060405180910390fd5b6103a485858585611294565b6103b2858585855a866115e8565b5050505050565b60608151835114610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061319b602c913960400191505060405180910390fd5b6060835167ffffffffffffffff8111801561042f57600080fd5b50604051908082528060200260200182016040528015610459578160200160208202803683370190505b50905060005b84518110156104fd5760008086838151811061047757fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008583815181106104c757fe5b60200260200101518152602001908152602001600020548282815181106104ea57fe5b602090810291909101015260010161045f565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff85166105f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612dfd565b60405180910390fd5b60606105fe61233e565b60606106b189857fa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a060001b8c8c8c60405160200161063c9190612b10565b604051602081830303815290604052805190602001208c6040516020016106639190612b10565b604051602081830303815290604052805190602001208c610685576000610688565b60015b60405160200161069d96959493929190612c69565b604051602081830303815290604052611855565b90506106bf89898989611294565b841561070257808060200190518101906106d99190612adb565b80945081935050506106f3898989898660200151886115e8565b6106fd8983611a24565b610710565b610710898989895a866115e8565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8516610768576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612ce6565b606061077261233e565b60606107aa89857fce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558828c8c8c8c610685576000610688565b90506107b889898989611ccd565b84156107ec57808060200190518101906107d29190612adb565b80945081935050506106f389898989866020015188611dd0565b610710898989895a86611dd0565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff8616148061085e575061085e85336107fa565b6108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613065602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661091f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613003602b913960400191505060405180910390fd5b61092b85858585611ccd565b6103b2858585855a86611dd0565b606061099586837ff5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa52482898961096f576000610972565b60015b8961097e576000610981565b60015b60405160200161069d959493929190612caa565b73ffffffffffffffffffffffffffffffffffffffff8781166000818152600160209081526040808320948b16808452949091529081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168915151790555192935090917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3190610a29908890612c5e565b60405180910390a38215610a6157610a3f61233e565b81806020019051810190610a539190612aa8565b9050610a5f8782611a24565b505b505050505050565b600080825111610ac4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260438152602001806132296043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516610b30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806131c76033913960400191505060405180910390fd5b6000610b3b83611fc1565b60f81c905060058110610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806130c4603a913960400191505060405180910390fd5b60008160ff166005811115610baa57fe5b9050600080808080856005811115610bbe57fe5b1415610c15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260368152602001806130fe6036913960400191505060405180910390fd5b6001856005811115610c2357fe5b1415610d66578751606114610c83576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806131346037913960400191505060405180910390fd5b610c8e88600061207e565b9250610c9b88602061207e565b915087604081518110610caa57fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610d14573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d811691161497506112429650505050505050565b6002856005811115610d7457fe5b1415610ec4578751606114610dd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806131346037913960400191505060405180910390fd5b610ddf88600061207e565b9250610dec88602061207e565b915087604081518110610dfb57fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610d14573d6000803e3d6000fd5b6003856005811115610ed257fe5b141561108a57604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b83811015610f60578181015183820152602001610f48565b50505050905090810190601f168015610f8d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610fc0578181015183820152602001610fa8565b50505050905090810190601f168015610fed5780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561100c57600080fd5b505afa158015611020573d6000803e3d6000fd5b505050506040513d602081101561103657600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b0000000000000000000000000000000000000000000000000000000014965061124295505050505050565b600485600581111561109857fe5b14156111f157604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b83811015611128578181015183820152602001611110565b50505050905090810190601f1680156111555780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d602081101561119d57600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014965061124295505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806130c4603a913960400191505060405180910390fd5b949350505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b80518251146112ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061308f6035913960400191505060405180910390fd5b815160005b818110156114e05761138383828151811061130a57fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061135e57fe5b60200260200101518152602001908152602001600020546120e690919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106113cf57fe5b60200260200101518152602001908152602001600020819055506114718382815181106113f857fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600087858151811061144c57fe5b602002602001015181526020019081526020016000205461215d90919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008684815181106114bd57fe5b6020908102919091018101518252810191909152604001600020556001016112f3565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b8381101561158d578181015183820152602001611575565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156115cc5781810151838201526020016115b4565b5050505090500194505050505060405180910390a45050505050565b6116078573ffffffffffffffffffffffffffffffffffffffff166121d8565b15610a615760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156116bf5781810151838201526020016116a7565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156116fe5781810151838201526020016116e6565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561173a578181015183820152602001611722565b50505050905090810190601f1680156117675780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561178c57600080fd5b5087f11580156117a0573d6000803e3d6000fd5b50505050506040513d60208110156117b757600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f81526020018061326c603f913960400191505060405180910390fd5b6060808380602001905181019061186c9190612a51565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260026020526040812054919450919250906118a483604161207e565b90508181108015906118b857508160640181105b6118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612e5a565b600061192a8683878051906020012060405160200161190f93929190612b46565b6040516020818303038152906040528051906020012061220f565b9050606086838760405160200161194393929190612b6d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825273ffffffffffffffffffffffffffffffffffffffff8c166000818152600260205292909220600187019081905590935090917fb861b7bdbe611a846ab271b8d2810391bc8b5a968f390c322438ecab66bccf59916119ce91612f14565b60405180910390a26119e289838388610a69565b611a18576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612d43565b50505050509392505050565b6000611a338260600151611fc1565b60f81c905060028110611a72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612eb7565b60008160ff166002811115611a8357fe5b835160408501519192506000918291829173ffffffffffffffffffffffffffffffffffffffff1615611ab9578660400151611abb565b335b92506000856002811115611acb57fe5b1415611bca578660600151806020019051810190611ae99190612545565b909450915073ffffffffffffffffffffffffffffffffffffffff8416301415611b3a57611b1888848484611ccd565b611b358884845a8560405180602001604052806000815250611dd0565b611bc5565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f242432a90611b92908b90879087908790600401612bd5565b600060405180830381600087803b158015611bac57600080fd5b505af1158015611bc0573d6000803e3d6000fd5b505050505b611cc3565b8660600151806020019051810190611be29190612529565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290945073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90611c3b908b9087908690600401612ba4565b602060405180830381600087803b158015611c5557600080fd5b505af1158015611c69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c8d91906129f5565b611cc3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105eb90612da0565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208181526040808320858452909152902054611d0690826120e6565b73ffffffffffffffffffffffffffffffffffffffff80861660009081526020818152604080832087845282528083209490945591861681528082528281208582529091522054611d56908261215d565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b611def8573ffffffffffffffffffffffffffffffffffffffff166121d8565b15610a615760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611ea8578181015183820152602001611e90565b50505050905090810190601f168015611ed55780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b158015611ef857600080fd5b5087f1158015611f0c573d6000803e3d6000fd5b50505050506040513d6020811015611f2357600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806132ab603a913960400191505060405180910390fd5b60008082511161201c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603781526020018061302e6037913960400191505060405180910390fd5b8160018351038151811061202c57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b600081602001835110156120dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c8152602001806132e5603c913960400191505060405180910390fd5b50016020015190565b60008282111561215757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b6000828201838110156121d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f80158015906121d157507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470141592915050565b604080518082018252600281527f1901000000000000000000000000000000000000000000000000000000000000602080830191825283517f035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d47498183015230818601528451808203860181526060820190955284519490910193909320825160009491928692608001918291908083835b602083106122dc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161229f565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b60405180608001604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b600082601f83011261238c578081fd5b813561239f61239a82612f41565b612f1d565b8181529150602080830190848101818402860182018710156123c057600080fd5b60005b848110156123df578135845292820192908201906001016123c3565b505050505092915050565b600082601f8301126123fa578081fd5b813561240861239a82612f5f565b915080825283602082850101111561241f57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612448578081fd5b815161245661239a82612f5f565b915080825283602082850101111561246d57600080fd5b61247e816020840160208601612f9f565b5092915050565b600060808284031215612496578081fd5b6040516080810167ffffffffffffffff82821081831117156124b457fe5b816040528293508451835260208501516020840152604085015191506124d982612fcf565b81604084015260608501519150808211156124f357600080fd5b5061250085828601612438565b6060830152505092915050565b60006020828403121561251e578081fd5b81356121d181612fcf565b60006020828403121561253a578081fd5b81516121d181612fcf565b60008060408385031215612557578081fd5b825161256281612fcf565b6020939093015192949293505050565b60008060408385031215612584578182fd5b823561258f81612fcf565b9150602083013561259f81612fcf565b809150509250929050565b60008060008060008060c087890312156125c2578182fd5b86356125cd81612fcf565b955060208701356125dd81612fcf565b9450604087013567ffffffffffffffff808211156125f9578384fd5b6126058a838b0161237c565b9550606089013591508082111561261a578384fd5b6126268a838b0161237c565b94506080890135915061263882612ff4565b90925060a0880135908082111561264d578283fd5b5061265a89828a016123ea565b9150509295509295509295565b600080600080600060a0868803121561267e578081fd5b853561268981612fcf565b9450602086013561269981612fcf565b9350604086013567ffffffffffffffff808211156126b5578283fd5b6126c189838a0161237c565b945060608801359150808211156126d6578283fd5b6126e289838a0161237c565b935060808801359150808211156126f7578283fd5b50612704888289016123ea565b9150509295509295909350565b600080600080600060a08688031215612728578081fd5b853561273381612fcf565b9450602086013561274381612fcf565b9350604086013561275381612ff4565b9250606086013561276381612ff4565b9150608086013567ffffffffffffffff81111561277e578182fd5b612704888289016123ea565b60008060008060008060c087890312156127a2578384fd5b86356127ad81612fcf565b955060208701356127bd81612fcf565b9450604087013593506060870135925060808701356127db81612ff4565b915060a087013567ffffffffffffffff8111156127f6578182fd5b61265a89828a016123ea565b600080600080600060a08688031215612819578283fd5b853561282481612fcf565b9450602086013561283481612fcf565b93506040860135925060608601359150608086013567ffffffffffffffff81111561277e578182fd5b6000806040838503121561286f578182fd5b823561287a81612fcf565b9150602083013561259f81612ff4565b6000806000806080858703121561289f578182fd5b84356128aa81612fcf565b935060208501359250604085013567ffffffffffffffff808211156128cd578384fd5b6128d9888389016123ea565b935060608701359150808211156128ee578283fd5b506128fb878288016123ea565b91505092959194509250565b60008060408385031215612919578182fd5b823561292481612fcf565b946020939093013593505050565b60008060408385031215612944578182fd5b823567ffffffffffffffff8082111561295b578384fd5b818501915085601f83011261296e578384fd5b813561297c61239a82612f41565b80828252602080830192508086018a82838702890101111561299c578889fd5b8896505b848710156129c75780356129b381612fcf565b8452600196909601959281019281016129a0565b5090965087013593505050808211156129de578283fd5b506129eb8582860161237c565b9150509250929050565b600060208284031215612a06578081fd5b81516121d181612ff4565b600060208284031215612a22578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146121d1578182fd5b60008060408385031215612a63578182fd5b825167ffffffffffffffff80821115612a7a578384fd5b612a8686838701612438565b93506020850151915080821115612a9b578283fd5b506129eb85828601612438565b600060208284031215612ab9578081fd5b815167ffffffffffffffff811115612acf578182fd5b61124284828501612485565b60008060408385031215612aed578182fd5b825167ffffffffffffffff80821115612b04578384fd5b612a8686838701612485565b815160009082906020808601845b83811015612b3a57815185529382019390820190600101612b1e565b50929695505050505050565b60008451612b58818460208901612f9f565b91909101928352506020820152604001919050565b60008451612b7f818460208901612f9f565b82018481528351612b97816020808501908801612f9f565b0160200195945050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260a06080820181905260009082015260c00190565b6020808252825182820181905260009190848201906040850190845b81811015612c5257835183529284019291840191600101612c36565b50909695505050505050565b901515815260200190565b95865273ffffffffffffffffffffffffffffffffffffffff94851660208701529290931660408501526060840152608083019190915260a082015260c00190565b94855273ffffffffffffffffffffffffffffffffffffffff93841660208601529190921660408401526060830191909152608082015260a00190565b60208082526033908201527f455243313135354d657461236d657461536166655472616e7366657246726f6d60408201527f3a20494e56414c49445f524543495049454e5400000000000000000000000000606082015260800190565b60208082526033908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f5349474e415455524500000000000000000000000000606082015260800190565b60208082526032908201527f455243313135354d657461235f7472616e736665724761734665653a2045524360408201527f32305f5452414e534645525f4641494c45440000000000000000000000000000606082015260800190565b60208082526038908201527f455243313135354d657461236d6574615361666542617463685472616e73666560408201527f7246726f6d3a20494e56414c49445f524543495049454e540000000000000000606082015260800190565b6020808252602f908201527f455243313135354d657461235f7369676e617475726556616c69646174696f6e60408201527f3a20494e56414c49445f4e4f4e43450000000000000000000000000000000000606082015260800190565b6020808252602e908201527f455243313135354d657461235f7472616e736665724761734665653a20554e5360408201527f5550504f525445445f544f4b454e000000000000000000000000000000000000606082015260800190565b90815260200190565b60405181810167ffffffffffffffff81118282101715612f3957fe5b604052919050565b600067ffffffffffffffff821115612f5557fe5b5060209081020190565b600067ffffffffffffffff821115612f7357fe5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b83811015612fba578181015183820152602001612fa2565b83811115612fc9576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114612ff157600080fd5b50565b8015158114612ff157600080fdfe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245444552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f524551554952454445524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e4754485369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e455245524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f524551554952454445524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d4553534147454c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a2646970667358221220f4c7476882d4d2ee082a3c5ffbca34153b801c91b645155a177647fac534e14664736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xD3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA3D4926E GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xF242432A GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x1B5 JUMPI DUP1 PUSH4 0xF5D4C820 EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0xFA4E12D7 EQ PUSH2 0x1DB JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0xA3D4926E EQ PUSH2 0x17C JUMPI DUP1 PUSH4 0xCE0B514B EQ PUSH2 0x18F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x1A2 JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH4 0x2EB2C2D6 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x134 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x149 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x169 JUMPI PUSH2 0xD3 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x101 JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0x121 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEB PUSH2 0xE6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2907 JUMP JUMPDEST PUSH2 0x1EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x2F14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x114 PUSH2 0x10F CALLDATASIZE PUSH1 0x4 PUSH2 0x2A11 JUMP JUMPDEST PUSH2 0x221 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x2C5E JUMP JUMPDEST PUSH2 0xEB PUSH2 0x12F CALLDATASIZE PUSH1 0x4 PUSH2 0x250D JUMP JUMPDEST PUSH2 0x286 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x142 CALLDATASIZE PUSH1 0x4 PUSH2 0x2667 JUMP JUMPDEST PUSH2 0x2AE JUMP JUMPDEST STOP JUMPDEST PUSH2 0x15C PUSH2 0x157 CALLDATASIZE PUSH1 0x4 PUSH2 0x2932 JUMP JUMPDEST PUSH2 0x3B9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0xF8 SWAP2 SWAP1 PUSH2 0x2C1A JUMP JUMPDEST PUSH2 0x147 PUSH2 0x177 CALLDATASIZE PUSH1 0x4 PUSH2 0x285D JUMP JUMPDEST PUSH2 0x505 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x18A CALLDATASIZE PUSH1 0x4 PUSH2 0x25AA JUMP JUMPDEST PUSH2 0x59E JUMP JUMPDEST PUSH2 0x147 PUSH2 0x19D CALLDATASIZE PUSH1 0x4 PUSH2 0x278A JUMP JUMPDEST PUSH2 0x71B JUMP JUMPDEST PUSH2 0x114 PUSH2 0x1B0 CALLDATASIZE PUSH1 0x4 PUSH2 0x2572 JUMP JUMPDEST PUSH2 0x7FA JUMP JUMPDEST PUSH2 0x147 PUSH2 0x1C3 CALLDATASIZE PUSH1 0x4 PUSH2 0x2802 JUMP JUMPDEST PUSH2 0x835 JUMP JUMPDEST PUSH2 0x147 PUSH2 0x1D6 CALLDATASIZE PUSH1 0x4 PUSH2 0x2711 JUMP JUMPDEST PUSH2 0x939 JUMP JUMPDEST PUSH2 0x114 PUSH2 0x1E9 CALLDATASIZE PUSH1 0x4 PUSH2 0x288A JUMP JUMPDEST PUSH2 0xA69 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x275 JUMPI POP PUSH1 0x1 PUSH2 0x281 JUMP JUMPDEST PUSH2 0x27E DUP3 PUSH2 0x124A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x2D7 JUMPI POP PUSH2 0x2D7 DUP6 CALLER PUSH2 0x7FA JUMP JUMPDEST PUSH2 0x32C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x31FA PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x398 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x316B PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3A4 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1294 JUMP JUMPDEST PUSH2 0x3B2 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x15E8 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x415 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x319B PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x42F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x459 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x4FD JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x477 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x4C7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x4EA JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x45F JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x5F4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2DFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 PUSH2 0x5FE PUSH2 0x233E JUMP JUMPDEST PUSH1 0x60 PUSH2 0x6B1 DUP10 DUP6 PUSH32 0xA3D4926E8CF8FE8E020CD29F514C256BC2EEC62AA2337E415F1A33A4828AF5A0 PUSH1 0x0 SHL DUP13 DUP13 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x63C SWAP2 SWAP1 PUSH2 0x2B10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x663 SWAP2 SWAP1 PUSH2 0x2B10 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP13 PUSH2 0x685 JUMPI PUSH1 0x0 PUSH2 0x688 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x69D SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2C69 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE PUSH2 0x1855 JUMP JUMPDEST SWAP1 POP PUSH2 0x6BF DUP10 DUP10 DUP10 DUP10 PUSH2 0x1294 JUMP JUMPDEST DUP5 ISZERO PUSH2 0x702 JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x6D9 SWAP2 SWAP1 PUSH2 0x2ADB JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0x6F3 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x15E8 JUMP JUMPDEST PUSH2 0x6FD DUP10 DUP4 PUSH2 0x1A24 JUMP JUMPDEST PUSH2 0x710 JUMP JUMPDEST PUSH2 0x710 DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x15E8 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x768 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2CE6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x772 PUSH2 0x233E JUMP JUMPDEST PUSH1 0x60 PUSH2 0x7AA DUP10 DUP6 PUSH32 0xCE0B514B3931BDBE4D5D44E4F035AFE7113767B7DB71949271F6A62D9C60F558 DUP3 DUP13 DUP13 DUP13 DUP13 PUSH2 0x685 JUMPI PUSH1 0x0 PUSH2 0x688 JUMP JUMPDEST SWAP1 POP PUSH2 0x7B8 DUP10 DUP10 DUP10 DUP10 PUSH2 0x1CCD JUMP JUMPDEST DUP5 ISZERO PUSH2 0x7EC JUMPI DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x7D2 SWAP2 SWAP1 PUSH2 0x2ADB JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP4 POP POP POP PUSH2 0x6F3 DUP10 DUP10 DUP10 DUP10 DUP7 PUSH1 0x20 ADD MLOAD DUP9 PUSH2 0x1DD0 JUMP JUMPDEST PUSH2 0x710 DUP10 DUP10 DUP10 DUP10 GAS DUP7 PUSH2 0x1DD0 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x85E JUMPI POP PUSH2 0x85E DUP6 CALLER PUSH2 0x7FA JUMP JUMPDEST PUSH2 0x8B3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3065 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x91F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3003 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x92B DUP6 DUP6 DUP6 DUP6 PUSH2 0x1CCD JUMP JUMPDEST PUSH2 0x3B2 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1DD0 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x995 DUP7 DUP4 PUSH32 0xF5D4C820494C8595DE274C7FF619BEAD38AAC4FBC3D143B5BF956AA4B84FA524 DUP3 DUP10 DUP10 PUSH2 0x96F JUMPI PUSH1 0x0 PUSH2 0x972 JUMP JUMPDEST PUSH1 0x1 JUMPDEST DUP10 PUSH2 0x97E JUMPI PUSH1 0x0 PUSH2 0x981 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x69D SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2CAA JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP12 AND DUP1 DUP5 MSTORE SWAP5 SWAP1 SWAP2 MSTORE SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP10 ISZERO ISZERO OR SWAP1 SSTORE MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP1 PUSH2 0xA29 SWAP1 DUP9 SWAP1 PUSH2 0x2C5E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 DUP3 ISZERO PUSH2 0xA61 JUMPI PUSH2 0xA3F PUSH2 0x233E JUMP JUMPDEST DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0xA53 SWAP2 SWAP1 PUSH2 0x2AA8 JUMP JUMPDEST SWAP1 POP PUSH2 0xA5F DUP8 DUP3 PUSH2 0x1A24 JUMP JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0xAC4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3229 PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0xB30 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x31C7 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xB3B DUP4 PUSH2 0x1FC1 JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x5 DUP2 LT PUSH2 0xB99 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x30C4 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xBAA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xBBE JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xC15 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x30FE PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xC23 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xD66 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0xC83 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3134 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC8E DUP9 PUSH1 0x0 PUSH2 0x207E JUMP JUMPDEST SWAP3 POP PUSH2 0xC9B DUP9 PUSH1 0x20 PUSH2 0x207E JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0xCAA JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP4 POP PUSH1 0x1 DUP11 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 DUP2 AND SWAP2 AND EQ SWAP8 POP PUSH2 0x1242 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xD74 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0xEC4 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0xDD4 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x3134 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xDDF DUP9 PUSH1 0x0 PUSH2 0x207E JUMP JUMPDEST SWAP3 POP PUSH2 0xDEC DUP9 PUSH1 0x20 PUSH2 0x207E JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0xDFB JUMPI INVALID JUMPDEST ADD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 DUP6 ADD MSTORE PUSH1 0x3C DUP1 DUP3 ADD DUP16 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x5C DUP3 ADD DUP1 DUP5 MSTORE DUP2 MLOAD SWAP2 DUP7 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP1 SWAP2 MSTORE PUSH1 0x7C DUP3 ADD DUP1 DUP5 MSTORE MSTORE PUSH1 0xF8 SWAP3 SWAP1 SWAP3 SHR PUSH1 0x9C DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xBC DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0xDC DUP4 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP1 SWAP7 POP PUSH1 0x1 SWAP3 PUSH1 0xFC DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xED2 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x108A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 DUP3 MSTORE DUP11 MLOAD PUSH1 0x44 DUP3 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP3 PUSH4 0x20C13B0B SWAP3 DUP14 SWAP3 DUP14 SWAP3 SWAP2 DUP3 SWAP2 PUSH1 0x24 DUP3 ADD SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF60 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF48 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF8D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFC0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFA8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xFED JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x100C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1020 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1036 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x1242 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1098 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x11F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP13 DUP2 MSTORE PUSH1 0x24 DUP3 ADD SWAP3 DUP4 MSTORE DUP11 MLOAD PUSH1 0x44 DUP4 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP4 PUSH4 0x1626BA7E SWAP4 DUP16 SWAP4 DUP15 SWAP4 SWAP1 SWAP3 SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1128 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1110 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1155 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1173 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1187 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x119D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x1242 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x30C4 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0x12EE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x308F PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x14E0 JUMPI PUSH2 0x1383 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x130A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x135E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x20E6 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x13CF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0x1471 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x13F8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x144C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x215D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x14BD JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x12F3 JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x158D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1575 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15CC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x15B4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1607 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x21D8 JUMP JUMPDEST ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x16FE JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x16E6 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x173A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1722 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1767 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x178C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x17A0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x17B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xA5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x326C PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP1 DUP4 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x186C SWAP2 SWAP1 PUSH2 0x2A51 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP5 POP SWAP2 SWAP3 POP SWAP1 PUSH2 0x18A4 DUP4 PUSH1 0x41 PUSH2 0x207E JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT DUP1 ISZERO SWAP1 PUSH2 0x18B8 JUMPI POP DUP2 PUSH1 0x64 ADD DUP2 LT JUMPDEST PUSH2 0x18EE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2E5A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x192A DUP7 DUP4 DUP8 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x190F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B46 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH2 0x220F JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP7 DUP4 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x1943 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x2B6D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x1 DUP8 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 SWAP4 POP SWAP1 SWAP2 PUSH32 0xB861B7BDBE611A846AB271B8D2810391BC8B5A968F390C322438ECAB66BCCF59 SWAP2 PUSH2 0x19CE SWAP2 PUSH2 0x2F14 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH2 0x19E2 DUP10 DUP4 DUP4 DUP9 PUSH2 0xA69 JUMP JUMPDEST PUSH2 0x1A18 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2D43 JUMP JUMPDEST POP POP POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1A33 DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x1FC1 JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x2 DUP2 LT PUSH2 0x1A72 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2EB7 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1A83 JUMPI INVALID JUMPDEST DUP4 MLOAD PUSH1 0x40 DUP6 ADD MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 DUP3 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO PUSH2 0x1AB9 JUMPI DUP7 PUSH1 0x40 ADD MLOAD PUSH2 0x1ABB JUMP JUMPDEST CALLER JUMPDEST SWAP3 POP PUSH1 0x0 DUP6 PUSH1 0x2 DUP2 GT ISZERO PUSH2 0x1ACB JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1BCA JUMPI DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1AE9 SWAP2 SWAP1 PUSH2 0x2545 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ADDRESS EQ ISZERO PUSH2 0x1B3A JUMPI PUSH2 0x1B18 DUP9 DUP5 DUP5 DUP5 PUSH2 0x1CCD JUMP JUMPDEST PUSH2 0x1B35 DUP9 DUP5 DUP5 GAS DUP6 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1DD0 JUMP JUMPDEST PUSH2 0x1BC5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xF242432A00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0xF242432A SWAP1 PUSH2 0x1B92 SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x2BD5 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1BC0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH2 0x1CC3 JUMP JUMPDEST DUP7 PUSH1 0x60 ADD MLOAD DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x1BE2 SWAP2 SWAP1 PUSH2 0x2529 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x1C3B SWAP1 DUP12 SWAP1 DUP8 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x2BA4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1C55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1C69 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C8D SWAP2 SWAP1 PUSH2 0x29F5 JUMP JUMPDEST PUSH2 0x1CC3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x5EB SWAP1 PUSH2 0x2DA0 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1D06 SWAP1 DUP3 PUSH2 0x20E6 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x1D56 SWAP1 DUP3 PUSH2 0x215D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1DEF DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x21D8 JUMP JUMPDEST ISZERO PUSH2 0xA61 JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1EA8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1E90 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1ED5 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1F0C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1F23 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0xA5F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32AB PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x201C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x302E PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x202C JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO PUSH2 0x20DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x32E5 PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x2157 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x21D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x21D1 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x2 DUP2 MSTORE PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP4 MLOAD PUSH32 0x35AFF83D86937D35B32E04F0DDC6FF469290EEF2F1B692D8A815C89404D4749 DUP2 DUP4 ADD MSTORE ADDRESS DUP2 DUP7 ADD MSTORE DUP5 MLOAD DUP1 DUP3 SUB DUP7 ADD DUP2 MSTORE PUSH1 0x60 DUP3 ADD SWAP1 SWAP6 MSTORE DUP5 MLOAD SWAP5 SWAP1 SWAP2 ADD SWAP4 SWAP1 SWAP4 KECCAK256 DUP3 MLOAD PUSH1 0x0 SWAP5 SWAP2 SWAP3 DUP7 SWAP3 PUSH1 0x80 ADD SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x22DC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x229F JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE SWAP3 ADD SWAP5 DUP6 MSTORE POP DUP4 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP5 SUB DUP4 ADD DUP2 MSTORE SWAP3 DUP2 ADD SWAP1 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x238C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x239F PUSH2 0x239A DUP3 PUSH2 0x2F41 JUMP JUMPDEST PUSH2 0x2F1D JUMP JUMPDEST DUP2 DUP2 MSTORE SWAP2 POP PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP5 DUP2 ADD DUP2 DUP5 MUL DUP7 ADD DUP3 ADD DUP8 LT ISZERO PUSH2 0x23C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x23DF JUMPI DUP2 CALLDATALOAD DUP5 MSTORE SWAP3 DUP3 ADD SWAP3 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x23C3 JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x23FA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2408 PUSH2 0x239A DUP3 PUSH2 0x2F5F JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x241F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2448 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2456 PUSH2 0x239A DUP3 PUSH2 0x2F5F JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x246D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x247E DUP2 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x2F9F JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2496 JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP3 DUP3 LT DUP2 DUP4 GT OR ISZERO PUSH2 0x24B4 JUMPI INVALID JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 SWAP4 POP DUP5 MLOAD DUP4 MSTORE PUSH1 0x20 DUP6 ADD MLOAD PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP6 ADD MLOAD SWAP2 POP PUSH2 0x24D9 DUP3 PUSH2 0x2FCF JUMP JUMPDEST DUP2 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x24F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2500 DUP6 DUP3 DUP7 ADD PUSH2 0x2438 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x251E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x21D1 DUP2 PUSH2 0x2FCF JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x253A JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21D1 DUP2 PUSH2 0x2FCF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2557 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x2562 DUP2 PUSH2 0x2FCF JUMP JUMPDEST PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD MLOAD SWAP3 SWAP5 SWAP3 SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2584 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x258F DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x259F DUP2 PUSH2 0x2FCF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x25C2 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x25CD DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x25DD DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x25F9 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2605 DUP11 DUP4 DUP12 ADD PUSH2 0x237C JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x261A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2626 DUP11 DUP4 DUP12 ADD PUSH2 0x237C JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH2 0x2638 DUP3 PUSH2 0x2FF4 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x264D JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x265A DUP10 DUP3 DUP11 ADD PUSH2 0x23EA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x267E JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2689 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2699 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x26B5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x26C1 DUP10 DUP4 DUP11 ADD PUSH2 0x237C JUMP JUMPDEST SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x26D6 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0x26E2 DUP10 DUP4 DUP11 ADD PUSH2 0x237C JUMP JUMPDEST SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x26F7 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x2704 DUP9 DUP3 DUP10 ADD PUSH2 0x23EA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2728 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2733 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2743 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x2753 DUP2 PUSH2 0x2FF4 JUMP JUMPDEST SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x2763 DUP2 PUSH2 0x2FF4 JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x277E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x2704 DUP9 DUP3 DUP10 ADD PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x27A2 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD PUSH2 0x27AD DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD PUSH2 0x27BD DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP3 POP PUSH1 0x80 DUP8 ADD CALLDATALOAD PUSH2 0x27DB DUP2 PUSH2 0x2FF4 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x27F6 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x265A DUP10 DUP3 DUP11 ADD PUSH2 0x23EA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x2819 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x2824 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x2834 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x277E JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x286F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x287A DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x259F DUP2 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x289F JUMPI DUP2 DUP3 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x28AA DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x28CD JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x28D9 DUP9 DUP4 DUP10 ADD PUSH2 0x23EA JUMP JUMPDEST SWAP4 POP PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x28EE JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x28FB DUP8 DUP3 DUP9 ADD PUSH2 0x23EA JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2919 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x2924 DUP2 PUSH2 0x2FCF JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2944 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x295B JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x296E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x297C PUSH2 0x239A DUP3 PUSH2 0x2F41 JUMP JUMPDEST DUP1 DUP3 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP1 DUP7 ADD DUP11 DUP3 DUP4 DUP8 MUL DUP10 ADD ADD GT ISZERO PUSH2 0x299C JUMPI DUP9 DUP10 REVERT JUMPDEST DUP9 SWAP7 POP JUMPDEST DUP5 DUP8 LT ISZERO PUSH2 0x29C7 JUMPI DUP1 CALLDATALOAD PUSH2 0x29B3 DUP2 PUSH2 0x2FCF JUMP JUMPDEST DUP5 MSTORE PUSH1 0x1 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP3 DUP2 ADD SWAP3 DUP2 ADD PUSH2 0x29A0 JUMP JUMPDEST POP SWAP1 SWAP7 POP DUP8 ADD CALLDATALOAD SWAP4 POP POP POP DUP1 DUP3 GT ISZERO PUSH2 0x29DE JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x29EB DUP6 DUP3 DUP7 ADD PUSH2 0x237C JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A06 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x21D1 DUP2 PUSH2 0x2FF4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2A22 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND DUP2 EQ PUSH2 0x21D1 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2A63 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2A7A JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2A86 DUP7 DUP4 DUP8 ADD PUSH2 0x2438 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x2A9B JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0x29EB DUP6 DUP3 DUP7 ADD PUSH2 0x2438 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x2AB9 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x2ACF JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x1242 DUP5 DUP3 DUP6 ADD PUSH2 0x2485 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x2AED JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x2B04 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x2A86 DUP7 DUP4 DUP8 ADD PUSH2 0x2485 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x0 SWAP1 DUP3 SWAP1 PUSH1 0x20 DUP1 DUP7 ADD DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2B3A JUMPI DUP2 MLOAD DUP6 MSTORE SWAP4 DUP3 ADD SWAP4 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x2B1E JUMP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x2B58 DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x2F9F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 DUP4 MSTORE POP PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH2 0x2B7F DUP2 DUP5 PUSH1 0x20 DUP10 ADD PUSH2 0x2F9F JUMP JUMPDEST DUP3 ADD DUP5 DUP2 MSTORE DUP4 MLOAD PUSH2 0x2B97 DUP2 PUSH1 0x20 DUP1 DUP6 ADD SWAP1 DUP9 ADD PUSH2 0x2F9F JUMP JUMPDEST ADD PUSH1 0x20 ADD SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2C52 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x2C36 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP6 DUP7 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND PUSH1 0x20 DUP8 ADD MSTORE SWAP3 SWAP1 SWAP4 AND PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 ADD SWAP1 JUMP JUMPDEST SWAP5 DUP6 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND PUSH1 0x20 DUP7 ADD MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D657461536166655472616E7366657246726F6D PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F524543495049454E5400000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x33 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F5349474E415455524500000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x32 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20455243 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x32305F5452414E534645525F4641494C45440000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x38 SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461236D6574615361666542617463685472616E736665 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x7246726F6D3A20494E56414C49445F524543495049454E540000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2F SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7369676E617475726556616C69646174696F6E PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x3A20494E56414C49445F4E4F4E43450000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x2E SWAP1 DUP3 ADD MSTORE PUSH32 0x455243313135354D657461235F7472616E736665724761734665653A20554E53 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x5550504F525445445F544F4B454E000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x2F39 JUMPI INVALID JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2F55 JUMPI INVALID JUMPDEST POP PUSH1 0x20 SWAP1 DUP2 MUL ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT ISZERO PUSH2 0x2F73 JUMPI INVALID JUMPDEST POP PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2FBA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2FA2 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x2FC9 JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x2FF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x2FF1 JUMPI PUSH1 0x0 DUP1 REVERT INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD 0x4C PUSH10 0x62427974657323706F70 0x4C PUSH2 0x7374 TIMESTAMP PUSH26 0x74653A20475245415445525F5448414E5F5A45524F5F4C454E47 SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 SSTORE 0x4E MSTORE8 SSTORE POP POP 0x4F MSTORE SLOAD GASLIMIT DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4C 0x4C GASLIMIT SELFBALANCE COINBASE 0x4C 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F CODECOPY CALLDATACOPY 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E GASLIMIT MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F SLOAD 0x48 COINBASE 0x4E 0x5F ADDRESS 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT 0x4C PUSH10 0x62427974657323726561 PUSH5 0x4279746573 CALLER ORIGIN GASPRICE KECCAK256 SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F 0x4F MSTORE 0x5F GASLIMIT MLOAD SSTORE COINBASE 0x4C 0x5F SLOAD 0x4F 0x5F CALLER ORIGIN 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DELEGATECALL 0xC7 SELFBALANCE PUSH9 0x82D4D2EE082A3C5FFB 0xCA CALLVALUE ISZERO EXTCODESIZE DUP1 SHR SWAP2 0xB6 GASLIMIT ISZERO GAS OR PUSH23 0x47FAC534E14664736F6C63430007040033000000000000 ",
              "sourceMap": "473:13125:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7127:132:21;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8371:226;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11349:110:22:-;;;;;;:::i;:::-;;:::i;2312:522:21:-;;;;;;:::i;:::-;;:::i;:::-;;7539:495;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6135:230::-;;;;;;:::i;:::-;;:::i;4970:1709:22:-;;;;;;:::i;:::-;;:::i;2630:1583::-;;;;;;:::i;:::-;;:::i;6627:160:21:-;;;;;;:::i;:::-;;:::i;1373:556::-;;;;;;:::i;:::-;;:::i;7553:950:22:-;;;;;;:::i;:::-;;:::i;2047:3179:32:-;;;;;;:::i;:::-;;:::i;7127:132:21:-;7233:16;;;;;7209:7;7233:16;;;;;;;;;;;:21;;;;;;;;;7127:132::o;8371:226::-;8457:4;8473:42;;;8489:26;8473:42;8469:74;;;-1:-1:-1;8532:4:21;8525:11;;8469:74;8555:37;8579:12;8555:23;:37::i;:::-;8548:44;;8371:226;;;;:::o;11349:110:22:-;11439:15;;11409:13;11439:15;;;:6;:15;;;;;;;11349:110::o;2312:522:21:-;2498:10;:19;;;;;2497:60;;;2522:35;2539:5;2546:10;2522:16;:35::i;:::-;2489:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2623:17;;;2615:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2700:50;2723:5;2730:3;2735:4;2741:8;2700:22;:50::i;:::-;2756:73;2784:5;2791:3;2796:4;2802:8;2812:9;2823:5;2756:27;:73::i;:::-;2312:522;;;;;:::o;7539:495::-;7646:16;7698:4;:11;7680:7;:14;:29;7672:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7782:30;7829:7;:14;7815:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7815:29:21;;7782:62;;7900:9;7895:108;7919:7;:14;7915:1;:18;7895:108;;;7967:8;:20;7976:7;7984:1;7976:10;;;;;;;;;;;;;;7967:20;;;;;;;;;;;;;;;:29;7988:4;7993:1;7988:7;;;;;;;;;;;;;;7967:29;;;;;;;;;;;;7948:13;7962:1;7948:16;;;;;;;;;;;;;;;;;:48;7935:3;;7895:108;;;-1:-1:-1;8016:13:21;7539:495;-1:-1:-1;;;7539:495:21:o;6135:230::-;6267:10;6257:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;6312:48;;;;;;;6257:32;;6267:10;6312:48;;;;;;;;;;;6135:230;;:::o;4970:1709:22:-;5171:17;;;5163:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;5276:25;5307:28;;:::i;:::-;5394:23;5420:342;5448:5;5461;9017:66;5494:22;;5526:5;5563:3;5627:4;5610:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;5600:33;;;;;;5670:8;5653:26;;;;;;;;:::i;:::-;;;;;;;;;;;;;5643:37;;;;;;5690:9;:35;;5723:1;5690:35;;;5710:1;5690:35;5474:282;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5420:20;:342::i;:::-;5394:368;;5792:50;5815:5;5822:3;5827:4;5833:8;5792:22;:50::i;:::-;5888:9;5884:791;;;5947:10;5936:43;;;;;;;;;;;;:::i;:::-;5907:72;;;;;;;;6393:98;6421:5;6428:3;6433:4;6439:8;6449:10;:27;;;6478:12;6393:27;:98::i;:::-;6534:34;6550:5;6557:10;6534:15;:34::i;:::-;5884:791;;;6590:78;6618:5;6625:3;6630:4;6636:8;6646:9;6657:10;6590:27;:78::i;:::-;4970:1709;;;;;;;;;:::o;2630:1583::-;2806:17;;;2798:81;;;;;;;;;;;;:::i;:::-;2906:25;2937:28;;:::i;:::-;3024:23;3050:276;3078:5;3091;8788:66;3078:5;3187:3;3224;3237:7;3254:9;:35;;3287:1;3254:35;;3050:276;3024:302;;3355:43;3373:5;3380:3;3385;3390:7;3355:17;:43::i;:::-;3443:9;3439:770;;;3502:10;3491:43;;;;;;;;;;;;:::i;:::-;3462:72;;;;;;;;3948:91;3971:5;3978:3;3983;3988:7;3997:10;:27;;;4026:12;3948:22;:91::i;3439:770::-;4131:71;4154:5;4161:3;4166;4171:7;4180:9;4191:10;4131:22;:71::i;6627:160:21:-;6754:17;;;;6722:15;6754:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;6627:160::o;1373:556::-;1514:10;:19;;;;;1513:60;;;1538:35;1555:5;1562:10;1538:16;:35::i;:::-;1505:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:17;;;1626:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:43;1827:5;1834:3;1839;1844:7;1809:17;:43::i;:::-;1858:66;1881:5;1888:3;1893;1898:7;1907:9;1918:5;1858:22;:66::i;7553:950:22:-;7763:23;7789:380;7817:6;7831:5;9227:66;7817:6;7963:9;8030;:35;;8063:1;8030:35;;;8050:1;8030:35;8097:9;:35;;8130:1;8097:35;;;8117:1;8097:35;7844:319;;;;;;;;;;;;:::i;7789:380::-;8206:17;;;;;;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;:40;;;;;;;;;;8276:44;7763:406;;-1:-1:-1;8206:28:22;;8276:44;;;;8206:40;;8276:44;:::i;:::-;;;;;;;;8363:9;8359:140;;;8382:28;;:::i;:::-;8424:10;8413:36;;;;;;;;;;;;:::i;:::-;8382:67;;8457:35;8473:6;8481:10;8457:15;:35::i;:::-;8359:140;;7553:950;;;;;;:::o;2047:3179:32:-;2204:12;2255:1;2241:4;:11;:15;2226:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2361:30;;;2346:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2515:22;2546:18;:4;:16;:18::i;:::-;2540:25;;;-1:-1:-1;2649:29:32;2624:55;;2609:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:27;2834:16;2820:31;;;;;;;;;;2790:61;-1:-1:-1;2903:7:32;;;;;3272:13;:38;;;;;;;;;3268:1597;;;3320:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3268:1597;3450:20;3433:13;:37;;;;;;;;;3429:1436;;;3497:4;:11;3512:2;3497:17;3480:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3601:19;:4;3618:1;3601:16;:19::i;:::-;3597:23;-1:-1:-1;3632:20:32;:4;3649:2;3632:16;:20::i;:::-;3628:24;;3670:4;3675:2;3670:8;;;;;;;;;;;;;;;;3664:15;;3660:19;;3699:25;3709:5;3716:1;3719;3722;3699:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3699:25:32;;;;;3742:27;;;;;;;;-1:-1:-1;3777:14:32;;-1:-1:-1;;;;;;;3777:14:32;3429:1436;3894:21;3877:13;:38;;;;;;;;;3873:992;;;3942:4;:11;3957:2;3942:17;3925:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4046:19;:4;4063:1;4046:16;:19::i;:::-;4042:23;-1:-1:-1;4077:20:32;:4;4094:2;4077:16;:20::i;:::-;4073:24;;4115:4;4120:2;4115:8;;;;;;;;;;;;;;4173:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4163:70;;;;;;;;;-1:-1:-1;4144:130:32;;;;;;;;;;4115:8;;;;;4144:130;;;;;;;;;;;;;;;;;;;;4115:8;;-1:-1:-1;4144:130:32;;;;;;;4115:8;;-1:-1:-1;4144:130:32;;;;;;;;;;;;;;;;;;;;;;;;;3873:992;4444:25;4427:13;:42;;;;;;;;;4423:442;;;4511:60;;;;;;;;;;;;;;;;;;;;:47;;;;;;4559:5;;4566:4;;4511:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4511:60:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4511:60:32;4489:82;;:18;:82;;-1:-1:-1;4579:14:32;;-1:-1:-1;;;;;;4579:14:32;4423:442;4699:27;4682:13;:44;;;;;;;;;4678:187;;;4776:60;;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;;;4824:5;;4831:4;;4776:60;;;;;;;;;;;;;-1:-1:-1;4776:60:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4776:60:32;4746:90;;:26;:90;;-1:-1:-1;4844:14:32;;-1:-1:-1;;;;;;4844:14:32;4678:187;5153:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:3179;;;;;;;:::o;259:148:28:-;355:47;;;371:31;355:47;259:148;;;:::o;4452:670:21:-;4606:8;:15;4591:4;:11;:30;4583:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4743:11;;4723:17;4792:243;4816:9;4812:1;:13;4792:243;;;4915:41;4944:8;4953:1;4944:11;;;;;;;;;;;;;;4915:8;:15;4924:5;4915:15;;;;;;;;;;;;;;;:24;4931:4;4936:1;4931:7;;;;;;;;;;;;;;4915:24;;;;;;;;;;;;:28;;:41;;;;:::i;:::-;4888:8;:15;4897:5;4888:15;;;;;;;;;;;;;;;:24;4904:4;4909:1;4904:7;;;;;;;;;;;;;;4888:24;;;;;;;;;;;:68;;;;4989:39;5016:8;5025:1;5016:11;;;;;;;;;;;;;;4989:8;:13;4998:3;4989:13;;;;;;;;;;;;;;;:22;5003:4;5008:1;5003:7;;;;;;;;;;;;;;4989:22;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;4964:8;:13;4973:3;4964:13;;;;;;;;;;;;;;;:22;4978:4;4983:1;4978:7;;;;;;;;;;;;;;;;;;;4964:22;;;;;;;;;;-1:-1:-1;4964:22:21;:64;4827:3;;4792:243;;;;5097:3;5064:53;;5090:5;5064:53;;5078:10;5064:53;;;5102:4;5108:8;5064:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:670;;;;;:::o;5235:503::-;5456:16;:3;:14;;;:16::i;:::-;5452:282;;;5482:13;5520:3;5498:49;;;5553:9;5564:10;5576:5;5583:4;5589:8;5599:5;5498:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5498:107:21;;-1:-1:-1;5621:38:21;;;5631:28;5621:38;5613:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9962:1243:22;10093:23;10126:16;10218:8;10207:36;;;;;;;;;;;;:::i;:::-;10327:15;;;10304:20;10327:15;;;:6;:15;;;;;;10187:56;;-1:-1:-1;10187:56:22;;-1:-1:-1;10327:15:22;10412:19;10187:56;10428:2;10412:15;:19::i;:::-;10404:28;-1:-1:-1;10528:21:22;;;;;;10527:57;;;10564:12;10579:3;10564:18;10555:5;:28;10527:57;10512:135;;;;;;;;;;;;:::i;:::-;10687:12;10702:89;10747:11;10760:5;10777:10;10767:21;;;;;;10730:59;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10720:70;;;;;;10702:17;:89::i;:::-;10687:104;;10846:21;10887:11;10900:5;10907:10;10870:48;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;10954:15;;;;;;;:6;10870:48;10954:15;;;;;10980:1;10972:9;;10954:27;;;;10870:48;;-1:-1:-1;10954:15:22;;10992:31;;;;;:::i;:::-;;;;;;;;11075:46;11092:7;11101:4;11107:8;11117:3;11075:16;:46::i;:::-;11067:110;;;;;;;;;;;;:::i;:::-;11183:17;;;;;9962:1243;;;;;:::o;11901:1695::-;12029:21;12059:29;:2;:15;;;:27;:29::i;:::-;12053:36;;;-1:-1:-1;12170:19:22;12146:44;;12131:121;;;;;;;;;;;;:::i;:::-;12310:25;12351:15;12338:29;;;;;;;;;;12481:9;;12598:15;;;;12310:57;;-1:-1:-1;12394:20:22;;;;;;12598:29;;;:60;;12643:2;:15;;;12598:60;;;12630:10;12598:60;12583:75;-1:-1:-1;12713:20:22;12697:12;:36;;;;;;;;;12693:899;;;12780:2;:15;;;12769:47;;;;;;;;;;;;:::i;:::-;12743:73;;-1:-1:-1;12743:73:22;-1:-1:-1;12877:29:22;;;12901:4;12877:29;12873:458;;;12918:52;12936:5;12943:12;12957:7;12966:3;12918:17;:52::i;:::-;13094:72;13117:5;13124:12;13138:7;13147:9;13158:3;13094:72;;;;;;;;;;;;:22;:72::i;:::-;12873:458;;;13244:78;;;;;:39;;;;;;:78;;13284:5;;13291:12;;13305:7;;13314:3;;13244:78;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12873:458;12693:899;;;13404:2;:15;;;13393:38;;;;;;;;;;;;:::i;:::-;13456:59;;;;;13378:53;;-1:-1:-1;13456:33:22;;;;;;:59;;13490:5;;13497:12;;13511:3;;13456:59;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13439:146;;;;;;;;;;;;:::i;:::-;11901:1695;;;;;;;;:::o;3224:367:21:-;3376:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;3401:7;3376:24;:33::i;:::-;3353:15;;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;3455:13;;;;;;;;;;;:18;;;;;;;;:31;;3478:7;3455:22;:31::i;:::-;3434:13;;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:52;;;;3534;;;;;;;;;;;;;3434:13;;3534:52;;;;3549:10;;3534:52;;;;;;;;;;;3224:367;;;;:::o;3699:456::-;3891:16;:3;:14;;;:16::i;:::-;3887:264;;;3917:13;3955:3;3933:44;;;3983:9;3994:10;4006:5;4013:3;4018:7;4027:5;3933:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3933:100:21;;-1:-1:-1;4049:32:21;;;4059:22;4049:32;4041:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1033:396:29;1105:13;1154:1;1143;:8;:12;1128:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:1;1279;1268;:8;:12;1266:15;;;;;;;;;;;;1364:8;;1360:16;;1383:17;;;-1:-1:-1;1266:15:29;;;1033:396::o;1792:436::-;1891:14;1942:5;1950:2;1942:10;1930:1;:8;:22;;1915:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2185:13:29;2101:2;2185:13;2179:20;;1792:436::o;1186:158:31:-;1244:7;1272:1;1267;:6;;1259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1319:5:31;;;1186:158::o;1419:::-;1477:7;1504:5;;;1523:6;;;;1515:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:1;1419:158;-1:-1:-1;;;1419:158:31:o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;882:52;-1:-1:-1;;541:398:27:o;1351:336:30:-;1513:13;;;;;;;;;;;;;;;;;;;1557:88;;883:66;1557:88;;;;1628:4;1557:88;;;;;;;;;;;;;;;;;;;1536:119;;;;;;;;;;1487:194;;1439:14;;1536:119;;1665:10;;1487:194;;;;;1513:13;1487:194;;1513:13;1487:194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1487:194:30;;;;;;;-1:-1:-1;1487:194:30;;;;;;;;;;;;;;;1470:212;;;;;;1351:336;-1:-1:-1;;;1351:336:30:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:692:33:-;;127:3;120:4;112:6;108:17;104:27;94:2;;149:5;142;135:20;94:2;193:6;180:20;218:69;233:53;279:6;233:53;:::i;:::-;218:69;:::i;:::-;321:21;;;209:78;-1:-1:-1;361:4:33;381:14;;;;415:15;;;461;;;449:28;;445:37;;442:46;-1:-1:-1;439:2:33;;;501:1;498;491:12;439:2;523:1;533:167;547:6;544:1;541:13;533:167;;;608:17;;596:30;;646:12;;;;678;;;;569:1;562:9;533:167;;;537:3;;;;;84:622;;;;:::o;711:460::-;;808:3;801:4;793:6;789:17;785:27;775:2;;830:5;823;816:20;775:2;874:6;861:20;899:53;914:37;944:6;914:37;:::i;899:53::-;890:62;;975:6;968:5;961:21;1029:3;1022:4;1013:6;1005;1001:19;997:30;994:39;991:2;;;1046:1;1043;1036:12;991:2;1109:6;1102:4;1094:6;1090:17;1083:4;1076:5;1072:16;1059:57;1163:1;1136:18;;;1156:4;1132:29;1125:40;1140:5;765:406;-1:-1:-1;;765:406:33:o;1176:424::-;;1284:3;1277:4;1269:6;1265:17;1261:27;1251:2;;1306:5;1299;1292:20;1251:2;1343:6;1337:13;1368:53;1383:37;1413:6;1383:37;:::i;1368:53::-;1359:62;;1444:6;1437:5;1430:21;1498:3;1491:4;1482:6;1474;1470:19;1466:30;1463:39;1460:2;;;1515:1;1512;1505:12;1460:2;1528:66;1587:6;1580:4;1573:5;1569:16;1562:4;1554:6;1550:17;1528:66;:::i;:::-;;1241:359;;;;:::o;1605:812::-;;1724:4;1712:9;1707:3;1703:19;1699:30;1696:2;;;1746:5;1739;1732:20;1696:2;1783;1777:9;1825:4;1817:6;1813:17;1849:18;1917:6;1905:10;1902:22;1897:2;1885:10;1882:18;1879:46;1876:2;;;1928:9;1876:2;1959:10;1955:2;1948:22;1988:6;1979:15;;2024:9;2018:16;2010:6;2003:32;2089:2;2078:9;2074:18;2068:25;2063:2;2055:6;2051:15;2044:50;2139:2;2128:9;2124:18;2118:25;2103:40;;2152:35;2179:7;2152:35;:::i;:::-;2220:7;2215:2;2207:6;2203:15;2196:32;2272:2;2261:9;2257:18;2251:25;2237:39;;2299:2;2291:6;2288:14;2285:2;;;2315:1;2312;2305:12;2285:2;;2352:58;2406:3;2397:6;2386:9;2382:22;2352:58;:::i;:::-;2347:2;2339:6;2335:15;2328:83;;;1686:731;;;;:::o;2422:259::-;;2534:2;2522:9;2513:7;2509:23;2505:32;2502:2;;;2555:6;2547;2540:22;2502:2;2599:9;2586:23;2618:33;2645:5;2618:33;:::i;2686:271::-;;2817:2;2805:9;2796:7;2792:23;2788:32;2785:2;;;2838:6;2830;2823:22;2785:2;2875:9;2869:16;2894:33;2921:5;2894:33;:::i;2962:332::-;;;3110:2;3098:9;3089:7;3085:23;3081:32;3078:2;;;3131:6;3123;3116:22;3078:2;3168:9;3162:16;3187:33;3214:5;3187:33;:::i;:::-;3284:2;3269:18;;;;3263:25;3239:5;;3263:25;;-1:-1:-1;;;3068:226:33:o;3299:402::-;;;3428:2;3416:9;3407:7;3403:23;3399:32;3396:2;;;3449:6;3441;3434:22;3396:2;3493:9;3480:23;3512:33;3539:5;3512:33;:::i;:::-;3564:5;-1:-1:-1;3621:2:33;3606:18;;3593:32;3634:35;3593:32;3634:35;:::i;:::-;3688:7;3678:17;;;3386:315;;;;;:::o;3706:1267::-;;;;;;;3959:3;3947:9;3938:7;3934:23;3930:33;3927:2;;;3981:6;3973;3966:22;3927:2;4025:9;4012:23;4044:33;4071:5;4044:33;:::i;:::-;4096:5;-1:-1:-1;4153:2:33;4138:18;;4125:32;4166:35;4125:32;4166:35;:::i;:::-;4220:7;-1:-1:-1;4278:2:33;4263:18;;4250:32;4301:18;4331:14;;;4328:2;;;4363:6;4355;4348:22;4328:2;4391:67;4450:7;4441:6;4430:9;4426:22;4391:67;:::i;:::-;4381:77;;4511:2;4500:9;4496:18;4483:32;4467:48;;4540:2;4530:8;4527:16;4524:2;;;4561:6;4553;4546:22;4524:2;4589:69;4650:7;4639:8;4628:9;4624:24;4589:69;:::i;:::-;4579:79;;4710:3;4699:9;4695:19;4682:33;4667:48;;4724:32;4748:7;4724:32;:::i;:::-;4775:7;;-1:-1:-1;4835:3:33;4820:19;;4807:33;;4852:16;;;4849:2;;;4886:6;4878;4871:22;4849:2;;4914:53;4959:7;4948:8;4937:9;4933:24;4914:53;:::i;:::-;4904:63;;;3917:1056;;;;;;;;:::o;4978:1129::-;;;;;;5217:3;5205:9;5196:7;5192:23;5188:33;5185:2;;;5239:6;5231;5224:22;5185:2;5283:9;5270:23;5302:33;5329:5;5302:33;:::i;:::-;5354:5;-1:-1:-1;5411:2:33;5396:18;;5383:32;5424:35;5383:32;5424:35;:::i;:::-;5478:7;-1:-1:-1;5536:2:33;5521:18;;5508:32;5559:18;5589:14;;;5586:2;;;5621:6;5613;5606:22;5586:2;5649:67;5708:7;5699:6;5688:9;5684:22;5649:67;:::i;:::-;5639:77;;5769:2;5758:9;5754:18;5741:32;5725:48;;5798:2;5788:8;5785:16;5782:2;;;5819:6;5811;5804:22;5782:2;5847:69;5908:7;5897:8;5886:9;5882:24;5847:69;:::i;:::-;5837:79;;5969:3;5958:9;5954:19;5941:33;5925:49;;5999:2;5989:8;5986:16;5983:2;;;6020:6;6012;6005:22;5983:2;;6048:53;6093:7;6082:8;6071:9;6067:24;6048:53;:::i;:::-;6038:63;;;5175:932;;;;;;;;:::o;6112:898::-;;;;;;6295:3;6283:9;6274:7;6270:23;6266:33;6263:2;;;6317:6;6309;6302:22;6263:2;6361:9;6348:23;6380:33;6407:5;6380:33;:::i;:::-;6432:5;-1:-1:-1;6489:2:33;6474:18;;6461:32;6502:35;6461:32;6502:35;:::i;:::-;6556:7;-1:-1:-1;6615:2:33;6600:18;;6587:32;6628;6587;6628;:::i;:::-;6679:7;-1:-1:-1;6738:2:33;6723:18;;6710:32;6751;6710;6751;:::i;:::-;6802:7;-1:-1:-1;6860:3:33;6845:19;;6832:33;6888:18;6877:30;;6874:2;;;6925:6;6917;6910:22;6874:2;6953:51;6996:7;6987:6;6976:9;6972:22;6953:51;:::i;7015:898::-;;;;;;;7218:3;7206:9;7197:7;7193:23;7189:33;7186:2;;;7240:6;7232;7225:22;7186:2;7284:9;7271:23;7303:33;7330:5;7303:33;:::i;:::-;7355:5;-1:-1:-1;7412:2:33;7397:18;;7384:32;7425:35;7384:32;7425:35;:::i;:::-;7479:7;-1:-1:-1;7533:2:33;7518:18;;7505:32;;-1:-1:-1;7584:2:33;7569:18;;7556:32;;-1:-1:-1;7640:3:33;7625:19;;7612:33;7654:32;7612:33;7654:32;:::i;:::-;7705:7;-1:-1:-1;7763:3:33;7748:19;;7735:33;7791:18;7780:30;;7777:2;;;7828:6;7820;7813:22;7777:2;7856:51;7899:7;7890:6;7879:9;7875:22;7856:51;:::i;7918:760::-;;;;;;8107:3;8095:9;8086:7;8082:23;8078:33;8075:2;;;8129:6;8121;8114:22;8075:2;8173:9;8160:23;8192:33;8219:5;8192:33;:::i;:::-;8244:5;-1:-1:-1;8301:2:33;8286:18;;8273:32;8314:35;8273:32;8314:35;:::i;:::-;8368:7;-1:-1:-1;8422:2:33;8407:18;;8394:32;;-1:-1:-1;8473:2:33;8458:18;;8445:32;;-1:-1:-1;8528:3:33;8513:19;;8500:33;8556:18;8545:30;;8542:2;;;8593:6;8585;8578:22;8683:396;;;8809:2;8797:9;8788:7;8784:23;8780:32;8777:2;;;8830:6;8822;8815:22;8777:2;8874:9;8861:23;8893:33;8920:5;8893:33;:::i;:::-;8945:5;-1:-1:-1;9002:2:33;8987:18;;8974:32;9015;8974;9015;:::i;9084:779::-;;;;;9265:3;9253:9;9244:7;9240:23;9236:33;9233:2;;;9287:6;9279;9272:22;9233:2;9331:9;9318:23;9350:33;9377:5;9350:33;:::i;:::-;9402:5;-1:-1:-1;9454:2:33;9439:18;;9426:32;;-1:-1:-1;9509:2:33;9494:18;;9481:32;9532:18;9562:14;;;9559:2;;;9594:6;9586;9579:22;9559:2;9622:51;9665:7;9656:6;9645:9;9641:22;9622:51;:::i;:::-;9612:61;;9726:2;9715:9;9711:18;9698:32;9682:48;;9755:2;9745:8;9742:16;9739:2;;;9776:6;9768;9761:22;9739:2;;9804:53;9849:7;9838:8;9827:9;9823:24;9804:53;:::i;:::-;9794:63;;;9223:640;;;;;;;:::o;9868:327::-;;;9997:2;9985:9;9976:7;9972:23;9968:32;9965:2;;;10018:6;10010;10003:22;9965:2;10062:9;10049:23;10081:33;10108:5;10081:33;:::i;:::-;10133:5;10185:2;10170:18;;;;10157:32;;-1:-1:-1;;;9955:240:33:o;10200:1315::-;;;10379:2;10367:9;10358:7;10354:23;10350:32;10347:2;;;10400:6;10392;10385:22;10347:2;10445:9;10432:23;10474:18;10515:2;10507:6;10504:14;10501:2;;;10536:6;10528;10521:22;10501:2;10579:6;10568:9;10564:22;10554:32;;10624:7;10617:4;10613:2;10609:13;10605:27;10595:2;;10651:6;10643;10636:22;10595:2;10696;10683:16;10719:69;10734:53;10780:6;10734:53;:::i;10719:69::-;10810:3;10834:6;10829:3;10822:19;10860:4;10889:2;10884:3;10880:12;10873:19;;10920:2;10916;10912:11;10973:7;10968:2;10962;10954:6;10950:15;10946:2;10942:24;10938:33;10935:46;10932:2;;;10999:6;10991;10984:22;10932:2;11026:6;11017:15;;11041:244;11055:6;11052:1;11049:13;11041:244;;;11130:3;11117:17;11147:33;11174:5;11147:33;:::i;:::-;11193:18;;11077:1;11070:9;;;;;11231:12;;;;11263;;11041:244;;;-1:-1:-1;11304:5:33;;-1:-1:-1;11347:18:33;;11334:32;;-1:-1:-1;;;11378:16:33;;;11375:2;;;11412:6;11404;11397:22;11375:2;;11440:69;11501:7;11490:8;11479:9;11475:24;11440:69;:::i;:::-;11430:79;;;10337:1178;;;;;:::o;11520:257::-;;11640:2;11628:9;11619:7;11615:23;11611:32;11608:2;;;11661:6;11653;11646:22;11608:2;11698:9;11692:16;11717:30;11741:5;11717:30;:::i;11782:352::-;;11893:2;11881:9;11872:7;11868:23;11864:32;11861:2;;;11914:6;11906;11899:22;11861:2;11958:9;11945:23;12008:66;12001:5;11997:78;11990:5;11987:89;11977:2;;12095:6;12087;12080:22;12139:592;;;12297:2;12285:9;12276:7;12272:23;12268:32;12265:2;;;12318:6;12310;12303:22;12265:2;12356:9;12350:16;12385:18;12426:2;12418:6;12415:14;12412:2;;;12447:6;12439;12432:22;12412:2;12475:62;12529:7;12520:6;12509:9;12505:22;12475:62;:::i;:::-;12465:72;;12583:2;12572:9;12568:18;12562:25;12546:41;;12612:2;12602:8;12599:16;12596:2;;;12633:6;12625;12618:22;12596:2;;12661:64;12717:7;12706:8;12695:9;12691:24;12661:64;:::i;12736:389::-;;12887:2;12875:9;12866:7;12862:23;12858:32;12855:2;;;12908:6;12900;12893:22;12855:2;12946:9;12940:16;12979:18;12971:6;12968:30;12965:2;;;13016:6;13008;13001:22;12965:2;13044:75;13111:7;13102:6;13091:9;13087:22;13044:75;:::i;13130:624::-;;;13307:2;13295:9;13286:7;13282:23;13278:32;13275:2;;;13328:6;13320;13313:22;13275:2;13366:9;13360:16;13395:18;13436:2;13428:6;13425:14;13422:2;;;13457:6;13449;13442:22;13422:2;13485:75;13552:7;13543:6;13532:9;13528:22;13485:75;:::i;13759:545::-;13977:13;;13759:545;;13951:3;;14030:4;14057:15;;;13759:545;14102:175;14116:6;14113:1;14110:13;14102:175;;;14179:13;;14165:28;;14215:14;;;;14252:15;;;;14138:1;14131:9;14102:175;;;-1:-1:-1;14293:5:33;;13928:376;-1:-1:-1;;;;;;13928:376:33:o;14309:437::-;;14532:6;14526:13;14548:53;14594:6;14589:3;14582:4;14574:6;14570:17;14548:53;:::i;:::-;14623:16;;;;14648:21;;;-1:-1:-1;14696:4:33;14685:16;;14678:32;14737:2;14726:14;;14502:244;-1:-1:-1;14502:244:33:o;14751:546::-;;14992:6;14986:13;15008:53;15054:6;15049:3;15042:4;15034:6;15030:17;15008:53;:::i;:::-;15083:16;;15108:21;;;15154:13;;15176:68;15154:13;15228:4;15217:16;;;;15198:17;;15176:68;:::i;:::-;15264:20;15286:4;15260:31;;14962:335;-1:-1:-1;;;;;14962:335:33:o;15302:398::-;15514:42;15583:15;;;15565:34;;15635:15;;;;15630:2;15615:18;;15608:43;15682:2;15667:18;;15660:34;;;;15492:2;15477:18;;15459:241::o;15705:653::-;16010:42;16079:15;;;16061:34;;16131:15;;;;16126:2;16111:18;;16104:43;16178:2;16163:18;;16156:34;16221:2;16206:18;;16199:34;;;;16270:3;16264;16249:19;;16242:32;;;15705:653;16290:19;;;16283:33;16348:3;16333:19;;15990:368::o;16363:635::-;16534:2;16586:21;;;16656:13;;16559:18;;;16678:22;;;16363:635;;16534:2;16757:15;;;;16731:2;16716:18;;;16363:635;16803:169;16817:6;16814:1;16811:13;16803:169;;;16878:13;;16866:26;;16947:15;;;;16912:12;;;;16839:1;16832:9;16803:169;;;-1:-1:-1;16989:3:33;;16514:484;-1:-1:-1;;;;;;16514:484:33:o;17003:187::-;17168:14;;17161:22;17143:41;;17131:2;17116:18;;17098:92::o;17195:614::-;17482:25;;;17526:42;17604:15;;;17599:2;17584:18;;17577:43;17656:15;;;;17651:2;17636:18;;17629:43;17703:2;17688:18;;17681:34;17746:3;17731:19;;17724:35;;;;17790:3;17775:19;;17768:35;17469:3;17454:19;;17436:373::o;17814:542::-;18073:25;;;18117:42;18195:15;;;18190:2;18175:18;;18168:43;18247:15;;;;18242:2;18227:18;;18220:43;18294:2;18279:18;;18272:34;;;;18337:3;18322:19;;18315:35;18060:3;18045:19;;18027:329::o;18980:415::-;19182:2;19164:21;;;19221:2;19201:18;;;19194:30;19260:34;19255:2;19240:18;;19233:62;19331:21;19326:2;19311:18;;19304:49;19385:3;19370:19;;19154:241::o;19400:415::-;19602:2;19584:21;;;19641:2;19621:18;;;19614:30;19680:34;19675:2;19660:18;;19653:62;19751:21;19746:2;19731:18;;19724:49;19805:3;19790:19;;19574:241::o;19820:414::-;20022:2;20004:21;;;20061:2;20041:18;;;20034:30;20100:34;20095:2;20080:18;;20073:62;20171:20;20166:2;20151:18;;20144:48;20224:3;20209:19;;19994:240::o;20239:420::-;20441:2;20423:21;;;20480:2;20460:18;;;20453:30;20519:34;20514:2;20499:18;;20492:62;20590:26;20585:2;20570:18;;20563:54;20649:3;20634:19;;20413:246::o;20664:411::-;20866:2;20848:21;;;20905:2;20885:18;;;20878:30;20944:34;20939:2;20924:18;;20917:62;21015:17;21010:2;20995:18;;20988:45;21065:3;21050:19;;20838:237::o;21080:410::-;21282:2;21264:21;;;21321:2;21301:18;;;21294:30;21360:34;21355:2;21340:18;;21333:62;21431:16;21426:2;21411:18;;21404:44;21480:3;21465:19;;21254:236::o;21495:177::-;21641:25;;;21629:2;21614:18;;21596:76::o;21677:242::-;21747:2;21741:9;21777:17;;;21824:18;21809:34;;21845:22;;;21806:62;21803:2;;;21871:9;21803:2;21898;21891:22;21721:198;;-1:-1:-1;21721:198:33:o;21924:183::-;;22023:18;22015:6;22012:30;22009:2;;;22045:9;22009:2;-1:-1:-1;22096:4:33;22077:17;;;22073:28;;21999:108::o;22112:240::-;;22195:18;22187:6;22184:30;22181:2;;;22217:9;22181:2;-1:-1:-1;22265:4:33;22253:17;22272:66;22249:90;22341:4;22245:101;;22171:181::o;22357:258::-;22429:1;22439:113;22453:6;22450:1;22447:13;22439:113;;;22529:11;;;22523:18;22510:11;;;22503:39;22475:2;22468:10;22439:113;;;22570:6;22567:1;22564:13;22561:2;;;22605:1;22596:6;22591:3;22587:16;22580:27;22561:2;;22410:205;;;:::o;22620:156::-;22708:42;22701:5;22697:54;22690:5;22687:65;22677:2;;22766:1;22763;22756:12;22677:2;22667:109;:::o;22781:120::-;22869:5;22862:13;22855:21;22848:5;22845:32;22835:2;;22891:1;22888;22881:12"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "getNonce(address)": "2d0335ab",
              "isApprovedForAll(address,address)": "e985e9c5",
              "isValidSignature(address,bytes32,bytes,bytes)": "fa4e12d7",
              "metaSafeBatchTransferFrom(address,address,uint256[],uint256[],bool,bytes)": "a3d4926e",
              "metaSafeTransferFrom(address,address,uint256,uint256,bool,bytes)": "ce0b514b",
              "metaSetApprovalForAll(address,address,bool,bool,bytes)": "f5d4c820",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155Metadata.sol": {
        "ERC1155Metadata": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "string",
                  "name": "_uri",
                  "type": "string"
                },
                {
                  "indexed": true,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "URI",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "uri",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610484806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b5780630e89341c1461008e575b600080fd5b61007a6004803603602081101561005157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610120565b604080519115158252519081900360200190f35b6100ab600480360360208110156100a457600080fd5b5035610185565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100e55781810151838201526020016100cd565b50505050905090810190601f1680156101125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000141561017457506001610180565b61017d826102d8565b90505b919050565b6060600061019283610322565b60405160200180838054600181600116156101000203166002900480156101f05780601f106101ce5761010080835404028352918201916101f0565b820191906000526020600020905b8154815290600101906020018083116101dc575b5050825160208401908083835b6020831061023a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016101fd565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790527f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe50181526005909201905295945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b606081610363575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610180565b818060005b821561037c57600101600a83049250610368565b60608167ffffffffffffffff8111801561039557600080fd5b506040519080825280601f01601f1916602001820160405280156103c0576020820181803683370190505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b831561044457600a840660300160f81b8282806001900393508151811061040a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506103e7565b509594505050505056fea2646970667358221220555fbcdea6350758c26f618489e421cee4b58b048694c92749f431e7808aa28664736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x484 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x8E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x120 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x185 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCD JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x112 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x174 JUMPI POP PUSH1 0x1 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x17D DUP3 PUSH2 0x2D8 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x192 DUP4 PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1F0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1CE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1F0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1DC JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x23A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1FD JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x2E6A736F6E000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 ADD DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP3 ADD SWAP1 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x363 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x180 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x0 JUMPDEST DUP3 ISZERO PUSH2 0x37C JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP4 DIV SWAP3 POP PUSH2 0x368 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x444 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x40A JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x3E7 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE 0x5F 0xBC 0xDE 0xA6 CALLDATALOAD SMOD PC 0xC2 PUSH16 0x618489E421CEE4B58B048694C92749F4 BALANCE 0xE7 DUP1 DUP11 LOG2 DUP7 PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "364:2669:23:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c806301ffc9a71461003b5780630e89341c1461008e575b600080fd5b61007a6004803603602081101561005157600080fd5b50357fffffffff0000000000000000000000000000000000000000000000000000000016610120565b604080519115158252519081900360200190f35b6100ab600480360360208110156100a457600080fd5b5035610185565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100e55781810151838201526020016100cd565b50505050905090810190601f1680156101125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000141561017457506001610180565b61017d826102d8565b90505b919050565b6060600061019283610322565b60405160200180838054600181600116156101000203166002900480156101f05780601f106101ce5761010080835404028352918201916101f0565b820191906000526020600020905b8154815290600101906020018083116101dc575b5050825160208401908083835b6020831061023a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016101fd565b5181516020939093036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990911692169190911790527f2e6a736f6e000000000000000000000000000000000000000000000000000000920191825250604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe50181526005909201905295945050505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b606081610363575060408051808201909152600181527f30000000000000000000000000000000000000000000000000000000000000006020820152610180565b818060005b821561037c57600101600a83049250610368565b60608167ffffffffffffffff8111801561039557600080fd5b506040519080825280601f01601f1916602001820160405280156103c0576020820181803683370190505b5090507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b831561044457600a840660300160f81b8282806001900393508151811061040a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a840493506103e7565b509594505050505056fea2646970667358221220555fbcdea6350758c26f618489e421cee4b58b048694c92749f431e7808aa28664736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x8E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x7A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x120 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x185 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE5 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xCD JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x112 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xE89341C00000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x174 JUMPI POP PUSH1 0x1 PUSH2 0x180 JUMP JUMPDEST PUSH2 0x17D DUP3 PUSH2 0x2D8 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x192 DUP4 PUSH2 0x322 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV DUP1 ISZERO PUSH2 0x1F0 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1CE JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 DUP3 ADD SWAP2 PUSH2 0x1F0 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1DC JUMPI JUMPDEST POP POP DUP3 MLOAD PUSH1 0x20 DUP5 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x23A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x1FD JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 SWAP1 SWAP4 SUB PUSH2 0x100 EXP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD DUP1 NOT SWAP1 SWAP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 MSTORE PUSH32 0x2E6A736F6E000000000000000000000000000000000000000000000000000000 SWAP3 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5 ADD DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP3 ADD SWAP1 MSTORE SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH2 0x363 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH32 0x3000000000000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x180 JUMP JUMPDEST DUP2 DUP1 PUSH1 0x0 JUMPDEST DUP3 ISZERO PUSH2 0x37C JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP4 DIV SWAP3 POP PUSH2 0x368 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3C0 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x444 JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x40A JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH31 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x3E7 JUMP JUMPDEST POP SWAP6 SWAP5 POP POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE 0x5F 0xBC 0xDE 0xA6 CALLDATALOAD SMOD PC 0xC2 PUSH16 0x618489E421CEE4B58B048694C92749F4 BALANCE 0xE7 DUP1 DUP11 LOG2 DUP7 PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "364:2669:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2054:234;;;;;;;;;;;;;;;;-1:-1:-1;2054:234:23;;;;:::i;:::-;;;;;;;;;;;;;;;;;;840:155;;;;;;;;;;;;;;;;-1:-1:-1;840:155:23;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2054:234;2140:4;2156:50;;;2172:34;2156:50;2152:82;;;-1:-1:-1;2223:4:23;2216:11;;2152:82;2246:37;2270:12;2246:23;:37::i;:::-;2239:44;;2054:234;;;;:::o;840:155::-;896:13;948:15;965:14;975:3;965:9;:14::i;:::-;931:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;931:58:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;931:58:23;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;840:155:23:o;259:148:28:-;355:47;;;371:31;355:47;259:148;;;:::o;2518:513:23:-;2572:27;2611:7;2607:38;;-1:-1:-1;2628:10:23;;;;;;;;;;;;;;;;;;;2607:38;2663:2;;2651:9;2737:50;2744:6;;2737:50;;2760:5;;2778:2;2773:7;;;;2737:50;;;2793:17;2823:3;2813:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2813:14:23;-1:-1:-1;2793:34:23;-1:-1:-1;2845:7:23;;;2892:84;2899:7;;2892:84;;2949:2;2944;:7;2939:2;:12;2928:25;;2916:4;2921:3;;;;;;;2916:9;;;;;;;;;;;:37;;;;;;;;;;-1:-1:-1;2967:2:23;2961:8;;;;2892:84;;;-1:-1:-1;3021:4:23;2518:513;-1:-1:-1;;;;;2518:513:23:o"
            },
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7",
              "uri(uint256)": "0e89341c"
            }
          }
        }
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155MintBurn.sol": {
        "ERC1155MintBurn": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50611677806100206000396000f3fe608060405234801561001057600080fd5b506004361061007c5760003560e01c80634e1273f41161005b5780634e1273f4146102f5578063a22cb4651461046c578063e985e9c5146104a7578063f242432a146104e25761007c565b8062fdd58e1461008157806301ffc9a7146100cc5780632eb2c2d61461011f575b600080fd5b6100ba6004803603604081101561009757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105ba565b60408051918252519081900360200190f35b61010b600480360360208110156100e257600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166105ed565b604080519115158252519081900360200190f35b6102f3600480360360a081101561013557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561017657600080fd5b82018360208201111561018857600080fd5b803590602001918460208302840111640100000000831117156101aa57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156101fa57600080fd5b82018360208201111561020c57600080fd5b8035906020019184602083028401116401000000008311171561022e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561027e57600080fd5b82018360208201111561029057600080fd5b803590602001918460018302840111640100000000831117156102b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610652945050505050565b005b61041c6004803603604081101561030b57600080fd5b81019060208101813564010000000081111561032657600080fd5b82018360208201111561033857600080fd5b8035906020019184602083028401116401000000008311171561035a57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460208302840111640100000000831117156103de57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061075d945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610458578181015183820152602001610440565b505050509050019250505060405180910390f35b6102f36004803603604081101561048257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156108a9565b61010b600480360360408110156104bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610942565b6102f3600480360360a08110156104f857600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561054557600080fd5b82018360208201111561055757600080fd5b8035906020019184600183028401116401000000008311171561057957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061097d945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156106415750600161064d565b61064a82610a81565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061067b575061067b8533610942565b6106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061159a602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061153e6030913960400191505060405180910390fd5b61074885858585610acb565b610756858585855a86610e1f565b5050505050565b606081518351146107b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061156e602c913960400191505060405180910390fd5b6060835167ffffffffffffffff811180156107d357600080fd5b506040519080825280602002602001820160405280156107fd578160200160208202803683370190505b50905060005b84518110156108a15760008086838151811061081b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811061086b57fe5b602002602001015181526020019081526020016000205482828151811061088e57fe5b6020908102919091010152600101610803565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff861614806109a657506109a68533610942565b6109fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806114df602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806114b4602b913960400191505060405180910390fd5b610a7385858585611096565b610756858585855a86611199565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b8051825114610b25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806115096035913960400191505060405180910390fd5b815160005b81811015610d1757610bba838281518110610b4157fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610b9557fe5b602002602001015181526020019081526020016000205461138a90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610c0657fe5b6020026020010151815260200190815260200160002081905550610ca8838281518110610c2f57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610c8357fe5b602002602001015181526020019081526020016000205461140190919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610cf457fe5b602090810291909101810151825281019190915260400160002055600101610b2a565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610dc4578181015183820152602001610dac565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e03578181015183820152602001610deb565b5050505090500194505050505060405180910390a45050505050565b610e3e8573ffffffffffffffffffffffffffffffffffffffff1661147c565b1561108e5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610ef6578181015183820152602001610ede565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610f35578181015183820152602001610f1d565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015610f71578181015183820152602001610f59565b50505050905090810190601f168015610f9e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015610fc357600080fd5b5087f1158015610fd7573d6000803e3d6000fd5b50505050506040513d6020811015610fee57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806115c9603f913960400191505060405180910390fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546110cf908261138a565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152602081815260408083208784528252808320949094559186168152808252828120858252909152205461111f9082611401565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6111b88573ffffffffffffffffffffffffffffffffffffffff1661147c565b1561108e5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611271578181015183820152602001611259565b50505050905090810190601f16801561129e5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156112c157600080fd5b5087f11580156112d5573d6000803e3d6000fd5b50505050506040513d60208110156112ec57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611608603a913960400191505060405180910390fd5b6000828211156113fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008282018381101561147557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f801580159061147557507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47014159291505056fe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a264697066735822122024dec4fee1549f21e766162093d1a9993014961cde9e2480f26360bcde81218c64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1677 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x4E2 JUMPI PUSH2 0x7C JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x11F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x5ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x22E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x652 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x338 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x75D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x458 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x440 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x942 JUMP JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x97D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x641 JUMPI POP PUSH1 0x1 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x64A DUP3 PUSH2 0xA81 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x67B JUMPI POP PUSH2 0x67B DUP6 CALLER PUSH2 0x942 JUMP JUMPDEST PUSH2 0x6D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x159A PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x153E PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x748 DUP6 DUP6 DUP6 DUP6 PUSH2 0xACB JUMP JUMPDEST PUSH2 0x756 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xE1F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x7B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x156E PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x7D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x7FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x81B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x86B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x88E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x803 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x9A6 JUMPI POP PUSH2 0x9A6 DUP6 CALLER PUSH2 0x942 JUMP JUMPDEST PUSH2 0x9FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14DF PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0xA67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14B4 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA73 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1096 JUMP JUMPDEST PUSH2 0x756 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1199 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0xB25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1509 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD17 JUMPI PUSH2 0xBBA DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB41 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB95 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x138A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC06 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xCA8 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC2F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xC83 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1401 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCF4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xB2A JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDAC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE03 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDEB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE3E DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x147C JUMP JUMPDEST ISZERO PUSH2 0x108E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEF6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEDE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF35 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF1D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF71 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF59 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF9E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0xFD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15C9 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x10CF SWAP1 DUP3 PUSH2 0x138A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x111F SWAP1 DUP3 PUSH2 0x1401 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x11B8 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x147C JUMP JUMPDEST ISZERO PUSH2 0x108E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1271 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1259 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x129E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x12D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1608 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x13FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1475 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1475 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 0xDE 0xC4 INVALID 0xE1 SLOAD SWAP16 0x21 0xE7 PUSH7 0x162093D1A99930 EQ SWAP7 SHR 0xDE SWAP15 0x24 DUP1 CALLCODE PUSH4 0x60BCDE81 0x21 DUP13 PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "255:3266:24:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061007c5760003560e01c80634e1273f41161005b5780634e1273f4146102f5578063a22cb4651461046c578063e985e9c5146104a7578063f242432a146104e25761007c565b8062fdd58e1461008157806301ffc9a7146100cc5780632eb2c2d61461011f575b600080fd5b6100ba6004803603604081101561009757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105ba565b60408051918252519081900360200190f35b61010b600480360360208110156100e257600080fd5b50357fffffffff00000000000000000000000000000000000000000000000000000000166105ed565b604080519115158252519081900360200190f35b6102f3600480360360a081101561013557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561017657600080fd5b82018360208201111561018857600080fd5b803590602001918460208302840111640100000000831117156101aa57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156101fa57600080fd5b82018360208201111561020c57600080fd5b8035906020019184602083028401116401000000008311171561022e57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561027e57600080fd5b82018360208201111561029057600080fd5b803590602001918460018302840111640100000000831117156102b257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610652945050505050565b005b61041c6004803603604081101561030b57600080fd5b81019060208101813564010000000081111561032657600080fd5b82018360208201111561033857600080fd5b8035906020019184602083028401116401000000008311171561035a57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460208302840111640100000000831117156103de57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061075d945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610458578181015183820152602001610440565b505050509050019250505060405180910390f35b6102f36004803603604081101561048257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013515156108a9565b61010b600480360360408110156104bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610942565b6102f3600480360360a08110156104f857600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561054557600080fd5b82018360208201111561055757600080fd5b8035906020019184600183028401116401000000008311171561057957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061097d945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116600090815260208181526040808320938352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156106415750600161064d565b61064a82610a81565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061067b575061067b8533610942565b6106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018061159a602f913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff841661073c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018061153e6030913960400191505060405180910390fd5b61074885858585610acb565b610756858585855a86610e1f565b5050505050565b606081518351146107b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c81526020018061156e602c913960400191505060405180910390fd5b6060835167ffffffffffffffff811180156107d357600080fd5b506040519080825280602002602001820160405280156107fd578160200160208202803683370190505b50905060005b84518110156108a15760008086838151811061081b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085838151811061086b57fe5b602002602001015181526020019081526020016000205482828151811061088e57fe5b6020908102919091010152600101610803565b509392505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b3373ffffffffffffffffffffffffffffffffffffffff861614806109a657506109a68533610942565b6109fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806114df602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610a67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806114b4602b913960400191505060405180910390fd5b610a7385858585611096565b610756858585855a86611199565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b8051825114610b25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806115096035913960400191505060405180910390fd5b815160005b81811015610d1757610bba838281518110610b4157fe5b60200260200101516000808973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610b9557fe5b602002602001015181526020019081526020016000205461138a90919063ffffffff16565b6000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610c0657fe5b6020026020010151815260200190815260200160002081905550610ca8838281518110610c2f57fe5b60200260200101516000808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000878581518110610c8357fe5b602002602001015181526020019081526020016000205461140190919063ffffffff16565b6000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000868481518110610cf457fe5b602090810291909101810151825281019190915260400160002055600101610b2a565b508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610dc4578181015183820152602001610dac565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e03578181015183820152602001610deb565b5050505090500194505050505060405180910390a45050505050565b610e3e8573ffffffffffffffffffffffffffffffffffffffff1661147c565b1561108e5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610ef6578181015183820152602001610ede565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610f35578181015183820152602001610f1d565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015610f71578181015183820152602001610f59565b50505050905090810190601f168015610f9e5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b158015610fc357600080fd5b5087f1158015610fd7573d6000803e3d6000fd5b50505050506040513d6020811015610fee57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f8152602001806115c9603f913960400191505060405180910390fd5b505b505050505050565b73ffffffffffffffffffffffffffffffffffffffff84166000908152602081815260408083208584529091529020546110cf908261138a565b73ffffffffffffffffffffffffffffffffffffffff8086166000908152602081815260408083208784528252808320949094559186168152808252828120858252909152205461111f9082611401565b73ffffffffffffffffffffffffffffffffffffffff808516600081815260208181526040808320888452825291829020949094558051868152938401859052805191939288169233927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62929181900390910190a450505050565b6111b88573ffffffffffffffffffffffffffffffffffffffff1661147c565b1561108e5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611271578181015183820152602001611259565b50505050905090810190601f16801561129e5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b1580156112c157600080fd5b5087f11580156112d5573d6000803e3d6000fd5b50505050506040513d60208110156112ec57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461108c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611608603a913960400191505060405180910390fd5b6000828211156113fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f536166654d617468237375623a20554e444552464c4f57000000000000000000604482015290519081900360640190fd5b50900390565b60008282018381101561147557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f536166654d617468236164643a204f564552464c4f5700000000000000000000604482015290519081900360640190fd5b9392505050565b6000813f801580159061147557507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47014159291505056fe4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e544552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e47544845524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f5245524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d45535341474545524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745a264697066735822122024dec4fee1549f21e766162093d1a9993014961cde9e2480f26360bcde81218c64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x2F5 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x46C JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4A7 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x4E2 JUMPI PUSH2 0x7C JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xCC JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x11F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x97 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5BA JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x5ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x135 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x176 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x20C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x22E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x27E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x290 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x652 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x41C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x30B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x338 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x75D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x458 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x440 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x482 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x8A9 JUMP JUMPDEST PUSH2 0x10B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x942 JUMP JUMPDEST PUSH2 0x2F3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x545 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x557 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x97D SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x641 JUMPI POP PUSH1 0x1 PUSH2 0x64D JUMP JUMPDEST PUSH2 0x64A DUP3 PUSH2 0xA81 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x67B JUMPI POP PUSH2 0x67B DUP6 CALLER PUSH2 0x942 JUMP JUMPDEST PUSH2 0x6D0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x159A PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x73C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x30 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x153E PUSH1 0x30 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x748 DUP6 DUP6 DUP6 DUP6 PUSH2 0xACB JUMP JUMPDEST PUSH2 0x756 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0xE1F JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x7B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x156E PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x7D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x7FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x8A1 JUMPI PUSH1 0x0 DUP1 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x81B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x86B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x88E JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x803 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x9A6 JUMPI POP PUSH2 0x9A6 DUP6 CALLER PUSH2 0x942 JUMP JUMPDEST PUSH2 0x9FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14DF PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0xA67 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14B4 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA73 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1096 JUMP JUMPDEST PUSH2 0x756 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x1199 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD EQ PUSH2 0xB25 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x35 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1509 PUSH1 0x35 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD17 JUMPI PUSH2 0xBBA DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB41 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xB95 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x138A SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xC06 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH2 0xCA8 DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xC2F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 DUP1 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0xC83 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1401 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP1 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xCF4 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 ADD PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0xB2A JUMP JUMPDEST POP DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xDC4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDAC JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE03 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDEB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xE3E DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x147C JUMP JUMPDEST ISZERO PUSH2 0x108E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEF6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEDE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF35 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF1D JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF71 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF59 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xF9E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xFC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0xFD7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xFEE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x15C9 PUSH1 0x3F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x10CF SWAP1 DUP3 PUSH2 0x138A JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE SWAP2 DUP7 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP3 DUP2 KECCAK256 DUP6 DUP3 MSTORE SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH2 0x111F SWAP1 DUP3 PUSH2 0x1401 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP7 DUP2 MSTORE SWAP4 DUP5 ADD DUP6 SWAP1 MSTORE DUP1 MLOAD SWAP2 SWAP4 SWAP3 DUP9 AND SWAP3 CALLER SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x11B8 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x147C JUMP JUMPDEST ISZERO PUSH2 0x108E JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1271 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1259 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x129E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x12C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x12D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x108C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1608 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x13FB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468237375623A20554E444552464C4F57000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x1475 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D617468236164643A204F564552464C4F5700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1475 JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 EQ ISZERO SWAP3 SWAP2 POP POP JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x6166655472616E7366657246726F6D3A20494E56 COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE MSTORE8 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH3 0x616C61 PUSH15 0x63654F6642617463683A20494E5641 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 PUSH20 0x61666542617463685472616E7366657246726F6D GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD 0x23 0x5F PUSH4 0x616C6C6F PUSH15 0x455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 0xDE 0xC4 INVALID 0xE1 SLOAD SWAP16 0x21 0xE7 PUSH7 0x162093D1A99930 EQ SWAP7 SHR 0xDE SWAP15 0x24 DUP1 CALLCODE PUSH4 0x60BCDE81 0x21 DUP13 PUSH5 0x736F6C6343 STOP SMOD DIV STOP CALLER ",
              "sourceMap": "255:3266:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7127:132:21;;;;;;;;;;;;;;;;-1:-1:-1;7127:132:21;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8371:226;;;;;;;;;;;;;;;;-1:-1:-1;8371:226:21;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2312:522;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2312:522:21;;;;;;;;-1:-1:-1;2312:522:21;;-1:-1:-1;;2312:522:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2312:522:21;;;;;;;;-1:-1:-1;2312:522:21;;-1:-1:-1;;2312:522:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2312:522:21;;-1:-1:-1;2312:522:21;;-1:-1:-1;;;;;2312:522:21:i;:::-;;7539:495;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7539:495:21;;;;;;;;-1:-1:-1;7539:495:21;;-1:-1:-1;;7539:495:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7539:495:21;;-1:-1:-1;7539:495:21;;-1:-1:-1;;;;;7539:495:21:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6135:230;;;;;;;;;;;;;;;;-1:-1:-1;6135:230:21;;;;;;;;;;;:::i;6627:160::-;;;;;;;;;;;;;;;;-1:-1:-1;6627:160:21;;;;;;;;;;;:::i;1373:556::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1373:556:21;;-1:-1:-1;1373:556:21;;-1:-1:-1;;;;;1373:556:21:i;7127:132::-;7233:16;;;;;7209:7;7233:16;;;;;;;;;;;:21;;;;;;;;;7127:132::o;8371:226::-;8457:4;8473:42;;;8489:26;8473:42;8469:74;;;-1:-1:-1;8532:4:21;8525:11;;8469:74;8555:37;8579:12;8555:23;:37::i;:::-;8548:44;;8371:226;;;;:::o;2312:522::-;2498:10;:19;;;;;2497:60;;;2522:35;2539:5;2546:10;2522:16;:35::i;:::-;2489:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2623:17;;;2615:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2700:50;2723:5;2730:3;2735:4;2741:8;2700:22;:50::i;:::-;2756:73;2784:5;2791:3;2796:4;2802:8;2812:9;2823:5;2756:27;:73::i;:::-;2312:522;;;;;:::o;7539:495::-;7646:16;7698:4;:11;7680:7;:14;:29;7672:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7782:30;7829:7;:14;7815:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7815:29:21;;7782:62;;7900:9;7895:108;7919:7;:14;7915:1;:18;7895:108;;;7967:8;:20;7976:7;7984:1;7976:10;;;;;;;;;;;;;;7967:20;;;;;;;;;;;;;;;:29;7988:4;7993:1;7988:7;;;;;;;;;;;;;;7967:29;;;;;;;;;;;;7948:13;7962:1;7948:16;;;;;;;;;;;;;;;;;:48;7935:3;;7895:108;;;-1:-1:-1;8016:13:21;7539:495;-1:-1:-1;;;7539:495:21:o;6135:230::-;6267:10;6257:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;6312:48;;;;;;;6257:32;;6267:10;6312:48;;;;;;;;;;;6135:230;;:::o;6627:160::-;6754:17;;;;6722:15;6754:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;6627:160::o;1373:556::-;1514:10;:19;;;;;1513:60;;;1538:35;1555:5;1562:10;1538:16;:35::i;:::-;1505:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:17;;;1626:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:43;1827:5;1834:3;1839;1844:7;1809:17;:43::i;:::-;1858:66;1881:5;1888:3;1893;1898:7;1907:9;1918:5;1858:22;:66::i;259:148:28:-;355:47;;;371:31;355:47;259:148;;;:::o;4452:670:21:-;4606:8;:15;4591:4;:11;:30;4583:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4743:11;;4723:17;4792:243;4816:9;4812:1;:13;4792:243;;;4915:41;4944:8;4953:1;4944:11;;;;;;;;;;;;;;4915:8;:15;4924:5;4915:15;;;;;;;;;;;;;;;:24;4931:4;4936:1;4931:7;;;;;;;;;;;;;;4915:24;;;;;;;;;;;;:28;;:41;;;;:::i;:::-;4888:8;:15;4897:5;4888:15;;;;;;;;;;;;;;;:24;4904:4;4909:1;4904:7;;;;;;;;;;;;;;4888:24;;;;;;;;;;;:68;;;;4989:39;5016:8;5025:1;5016:11;;;;;;;;;;;;;;4989:8;:13;4998:3;4989:13;;;;;;;;;;;;;;;:22;5003:4;5008:1;5003:7;;;;;;;;;;;;;;4989:22;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;4964:8;:13;4973:3;4964:13;;;;;;;;;;;;;;;:22;4978:4;4983:1;4978:7;;;;;;;;;;;;;;;;;;;4964:22;;;;;;;;;;-1:-1:-1;4964:22:21;:64;4827:3;;4792:243;;;;5097:3;5064:53;;5090:5;5064:53;;5078:10;5064:53;;;5102:4;5108:8;5064:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4452:670;;;;;:::o;5235:503::-;5456:16;:3;:14;;;:16::i;:::-;5452:282;;;5482:13;5520:3;5498:49;;;5553:9;5564:10;5576:5;5583:4;5589:8;5599:5;5498:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5498:107:21;;-1:-1:-1;5621:38:21;;;5631:28;5621:38;5613:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5452:282;;5235:503;;;;;;:::o;3224:367::-;3376:15;;;:8;:15;;;;;;;;;;;:20;;;;;;;;;:33;;3401:7;3376:24;:33::i;:::-;3353:15;;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:56;;;;3455:13;;;;;;;;;;;:18;;;;;;;;:31;;3478:7;3455:22;:31::i;:::-;3434:13;;;;:8;:13;;;;;;;;;;;:18;;;;;;;;;:52;;;;3534;;;;;;;;;;;;;3434:13;;3534:52;;;;3549:10;;3534:52;;;;;;;;;;;3224:367;;;;:::o;3699:456::-;3891:16;:3;:14;;;:16::i;:::-;3887:264;;;3917:13;3955:3;3933:44;;;3983:9;3994:10;4006:5;4013:3;4018:7;4027:5;3933:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3933:100:21;;-1:-1:-1;4049:32:21;;;4059:22;4049:32;4041:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1186:158:31;1244:7;1272:1;1267;:6;;1259:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1319:5:31;;;1186:158::o;1419:::-;1477:7;1504:5;;;1523:6;;;;1515:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1570:1;1419:158;-1:-1:-1;;;1419:158:31:o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;882:52;-1:-1:-1;;541:398:27:o"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "multi-token-standard/contracts/tokens/ERC1155PackedBalance/ERC1155MintBurnPackedBalance.sol": {
        "ERC1155MintBurnPackedBalance": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "getIDBinIndex",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "bin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_binValues",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_index",
                  "type": "uint256"
                }
              ],
              "name": "getValueInBin",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50611bb8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a25760003560e01c8063a22cb46511610076578063e985e9c51161005b578063e985e9c514610503578063eaec5f811461053e578063f242432a14610561576100a2565b8063a22cb46514610492578063db90e83c146104cd576100a2565b8062fdd58e146100a757806301ffc9a7146100f25780632eb2c2d6146101455780634e1273f41461031b575b600080fd5b6100e0600480360360408110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610639565b60408051918252519081900360200190f35b6101316004803603602081101561010857600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661068e565b604080519115158252519081900360200190f35b610319600480360360a081101561015b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561019c57600080fd5b8201836020820111156101ae57600080fd5b803590602001918460208302840111640100000000831117156101d057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561022057600080fd5b82018360208201111561023257600080fd5b8035906020019184602083028401116401000000008311171561025457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156102a457600080fd5b8201836020820111156102b657600080fd5b803590602001918460018302840111640100000000831117156102d857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106f3945050505050565b005b6104426004803603604081101561033157600080fd5b81019060208101813564010000000081111561034c57600080fd5b82018360208201111561035e57600080fd5b8035906020019184602083028401116401000000008311171561038057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184602083028401116401000000008311171561040457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506107fe945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047e578181015183820152602001610466565b505050509050019250505060405180910390f35b610319600480360360408110156104a857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610a7d565b6104ea600480360360208110156104e357600080fd5b5035610b16565b6040805192835260208301919091528051918290030190f35b6101316004803603604081101561051957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b23565b6100e06004803603604081101561055457600080fd5b5080359060200135610b5e565b610319600480360360a081101561057757600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460018302840111640100000000831117156105f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b71945050505050565b600080600061064784610b16565b73ffffffffffffffffffffffffffffffffffffffff871660009081526020818152604080832085845290915290205491935091506106859082610b5e565b95945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156106e2575060016106ee565b6106eb82610c75565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061071c575061071c8533610b23565b610771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180611a1b603c913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806118e6603d913960400191505060405180910390fd5b6107e985858585610cbf565b6107f7858585855a866110cc565b5050505050565b8151815160609190811461085d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806118ad6039913960400191505060405180910390fd5b60008061087d8560008151811061087057fe5b6020026020010151610b16565b9150915060008060008860008151811061089357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020549050600083905060608567ffffffffffffffff8111801561090757600080fd5b50604051908082528060200260200182016040528015610931578160200160208202803683370190505b50905061093e8385610b5e565b8160008151811061094b57fe5b602090810291909101015260015b86811015610a705761097089828151811061087057fe5b909650945082861415806109d9575089818151811061098b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a60018303815181106109b857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610a47576000808b83815181106109ed57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000205493508592505b610a518486610b5e565b828281518110610a5d57fe5b6020908102919091010152600101610959565b5098975050505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6008810491600790911690565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6020810282901c63ffffffff1692915050565b3373ffffffffffffffffffffffffffffffffffffffff86161480610b9a5750610b9a8533610b23565b610bef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806119566037913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611ad46038913960400191505060405180910390fd5b610c6785858585611343565b6107f7858585855a866113e7565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b815181518114610d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061198d6042913960600191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610d565750600081115b15610f2857600080610d6e8560008151811061087057fe5b73ffffffffffffffffffffffffffffffffffffffff8916600090815260208181526040808320858452909152812054875193955091935091610dc69190849088908590610db757fe5b602002602001015160016115d8565b73ffffffffffffffffffffffffffffffffffffffff881660009081526020818152604080832087845290915281205487519293509091610e1c9190859089908590610e0d57fe5b602002602001015160006115d8565b90508360015b86811015610ed657610e3989828151811061087057fe5b9096509450818614610ea85773ffffffffffffffffffffffffffffffffffffffff8b811660009081526020818152604080832086845280835281842098909855928d16825281815282822094825284815282822095909555878152948452808520549290935291909220549084905b610eb984868a8481518110610db757fe5b9350610ecc83868a8481518110610e0d57fe5b9250600101610e22565b505073ffffffffffffffffffffffffffffffffffffffff808a16600090815260208181526040808320888452825280832095909555918a16815280825283812095815294905292209190915550610fc5565b60005b81811015610fc357828181518110610f3f57fe5b6020026020010151610f6487868481518110610f5757fe5b6020026020010151610639565b1015610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180611a576036913960400191505060405180910390fd5b600101610f2b565b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611071578181015183820152602001611059565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156110b0578181015183820152602001611098565b5050505090500194505050505060405180910390a45050505050565b6110eb8573ffffffffffffffffffffffffffffffffffffffff166117eb565b1561133b5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156111a357818101518382015260200161118b565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156111e25781810151838201526020016111ca565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561121e578181015183820152602001611206565b50505050905090810190601f16801561124b5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561127057600080fd5b5087f1158015611284573d6000803e3d6000fd5b50505050506040513d602081101561129b57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604c8152602001806119cf604c913960600191505060405180910390fd5b505b505050505050565b6113508483836001611825565b61135d8383836000611825565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051808381526020018281526020019250505060405180910390a450505050565b6114068573ffffffffffffffffffffffffffffffffffffffff166117eb565b1561133b5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156114bf5781810151838201526020016114a7565b50505050905090810190601f1680156114ec5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561150f57600080fd5b5087f1158015611523573d6000803e3d6000fd5b50505050506040513d602081101561153a57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611339576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526047815260200180611a8d6047913960600191505060405180910390fd5b60006020840263ffffffff828460018111156115f057fe5b14156116be5784821b8701925086831015611656576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611b516032913960400191505060405180910390fd5b64010000000087831c82168601106116b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611b516032913960400191505060405180910390fd5b6117e1565b60018460018111156116cc57fe5b14156117905784821b8703925086831115611732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806119236033913960400191505060405180910390fd5b84818389901c1610156116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806119236033913960400191505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180611b0c6045913960600191505060405180910390fd5b5050949350505050565b6000813f801580159061181e57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b60008061183185610b16565b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091529020549193509150611871908286866115d8565b73ffffffffffffffffffffffffffffffffffffffff90961660009081526020818152604080832094835293905291909120949094555050505056fe455243313135355061636b656442616c616e63652362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e475448455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20554e444552464c4f57455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20554e444552464c4f57455243313135355061636b656442616c616e6365235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20494e56414c49445f42494e5f57524954455f4f5045524154494f4e455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a204f564552464c4f57a2646970667358221220990da772d71e391d91ab8e0405554dbded6f6a2556cc947b51efe8a34c6277b164736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BB8 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0xEAEC5F81 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x561 JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0xDB90E83C EQ PUSH2 0x4CD JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x31B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x639 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x6F3 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x7FE SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x466 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xA7D JUMP JUMPDEST PUSH2 0x4EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB23 JUMP JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xB71 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x647 DUP5 PUSH2 0xB16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x685 SWAP1 DUP3 PUSH2 0xB5E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x6E2 JUMPI POP PUSH1 0x1 PUSH2 0x6EE JUMP JUMPDEST PUSH2 0x6EB DUP3 PUSH2 0xC75 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x71C JUMPI POP PUSH2 0x71C DUP6 CALLER PUSH2 0xB23 JUMP JUMPDEST PUSH2 0x771 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A1B PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x7DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18E6 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E9 DUP6 DUP6 DUP6 DUP6 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x7F7 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x10CC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 SWAP1 DUP2 EQ PUSH2 0x85D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18AD PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x87D DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB16 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x893 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP4 SWAP1 POP PUSH1 0x60 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x907 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x931 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x93E DUP4 DUP6 PUSH2 0xB5E JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x94B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xA70 JUMPI PUSH2 0x970 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP3 DUP7 EQ ISZERO DUP1 PUSH2 0x9D9 JUMPI POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x9B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xA47 JUMPI PUSH1 0x0 DUP1 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9ED JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP4 POP DUP6 SWAP3 POP JUMPDEST PUSH2 0xA51 DUP5 DUP7 PUSH2 0xB5E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA5D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x959 JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x8 DUP2 DIV SWAP2 PUSH1 0x7 SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL DUP3 SWAP1 SHR PUSH4 0xFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0xB9A JUMPI POP PUSH2 0xB9A DUP6 CALLER PUSH2 0xB23 JUMP JUMPDEST PUSH2 0xBEF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1956 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1AD4 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC67 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1343 JUMP JUMPDEST PUSH2 0x7F7 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x13E7 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0xD1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x198D PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xD56 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 PUSH2 0xD6E DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0xDC6 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xDB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x15D8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0xE1C SWAP2 SWAP1 DUP6 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH2 0xE0D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH2 0x15D8 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xED6 JUMPI PUSH2 0xE39 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0xEA8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SWAP9 SWAP1 SWAP9 SSTORE SWAP3 DUP14 AND DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP5 DUP3 MSTORE DUP5 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP8 DUP2 MSTORE SWAP5 DUP5 MSTORE DUP1 DUP6 KECCAK256 SLOAD SWAP3 SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 SLOAD SWAP1 DUP5 SWAP1 JUMPDEST PUSH2 0xEB9 DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xDB7 JUMPI INVALID JUMPDEST SWAP4 POP PUSH2 0xECC DUP4 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE0D JUMPI INVALID JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xE22 JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP2 DUP11 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP4 DUP2 KECCAK256 SWAP6 DUP2 MSTORE SWAP5 SWAP1 MSTORE SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP PUSH2 0xFC5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFC3 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xF3F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xF64 DUP8 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xF57 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x639 JUMP JUMPDEST LT ISZERO PUSH2 0xFBB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A57 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0xF2B JUMP JUMPDEST POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1071 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1059 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10B0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1098 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x10EB DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17EB JUMP JUMPDEST ISZERO PUSH2 0x133B JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11A3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x118B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11E2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11CA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x121E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1206 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x124B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1284 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x129B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1339 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19CF PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1350 DUP5 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x135D DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1825 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1406 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17EB JUMP JUMPDEST ISZERO PUSH2 0x133B JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x14EC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x150F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1523 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1339 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A8D PUSH1 0x47 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP5 MUL PUSH4 0xFFFFFFFF DUP3 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x15F0 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x16BE JUMPI DUP5 DUP3 SHL DUP8 ADD SWAP3 POP DUP7 DUP4 LT ISZERO PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B51 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH5 0x100000000 DUP8 DUP4 SHR DUP3 AND DUP7 ADD LT PUSH2 0x16B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B51 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17E1 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x16CC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1790 JUMPI DUP5 DUP3 SHL DUP8 SUB SWAP3 POP DUP7 DUP4 GT ISZERO PUSH2 0x1732 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1923 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 DUP2 DUP4 DUP10 SWAP1 SHR AND LT ISZERO PUSH2 0x16B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1923 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B0C PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x181E JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 EQ ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1831 DUP6 PUSH2 0xB16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x1871 SWAP1 DUP3 DUP7 DUP7 PUSH2 0x15D8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH13 0x616E63654F6642617463683A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20554E444552464C4F JUMPI GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20494E56414C49445F4152524159535F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20554E444552464C4F57455243313135 CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20494E56414C49445F TIMESTAMP 0x49 0x4E 0x5F JUMPI MSTORE 0x49 SLOAD GASLIMIT 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x49 0x4F 0x4E GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A204F564552464C4F57 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP10 0xD 0xA7 PUSH19 0xD71E391D91AB8E0405554DBDED6F6A2556CC94 PUSH28 0x51EFE8A34C6277B164736F6C63430007040033000000000000000000 ",
              "sourceMap": "270:4445:25:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100a25760003560e01c8063a22cb46511610076578063e985e9c51161005b578063e985e9c514610503578063eaec5f811461053e578063f242432a14610561576100a2565b8063a22cb46514610492578063db90e83c146104cd576100a2565b8062fdd58e146100a757806301ffc9a7146100f25780632eb2c2d6146101455780634e1273f41461031b575b600080fd5b6100e0600480360360408110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610639565b60408051918252519081900360200190f35b6101316004803603602081101561010857600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661068e565b604080519115158252519081900360200190f35b610319600480360360a081101561015b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561019c57600080fd5b8201836020820111156101ae57600080fd5b803590602001918460208302840111640100000000831117156101d057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561022057600080fd5b82018360208201111561023257600080fd5b8035906020019184602083028401116401000000008311171561025457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156102a457600080fd5b8201836020820111156102b657600080fd5b803590602001918460018302840111640100000000831117156102d857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106f3945050505050565b005b6104426004803603604081101561033157600080fd5b81019060208101813564010000000081111561034c57600080fd5b82018360208201111561035e57600080fd5b8035906020019184602083028401116401000000008311171561038057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184602083028401116401000000008311171561040457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506107fe945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047e578181015183820152602001610466565b505050509050019250505060405180910390f35b610319600480360360408110156104a857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610a7d565b6104ea600480360360208110156104e357600080fd5b5035610b16565b6040805192835260208301919091528051918290030190f35b6101316004803603604081101561051957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b23565b6100e06004803603604081101561055457600080fd5b5080359060200135610b5e565b610319600480360360a081101561057757600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460018302840111640100000000831117156105f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b71945050505050565b600080600061064784610b16565b73ffffffffffffffffffffffffffffffffffffffff871660009081526020818152604080832085845290915290205491935091506106859082610b5e565b95945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156106e2575060016106ee565b6106eb82610c75565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061071c575061071c8533610b23565b610771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180611a1b603c913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806118e6603d913960400191505060405180910390fd5b6107e985858585610cbf565b6107f7858585855a866110cc565b5050505050565b8151815160609190811461085d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806118ad6039913960400191505060405180910390fd5b60008061087d8560008151811061087057fe5b6020026020010151610b16565b9150915060008060008860008151811061089357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020549050600083905060608567ffffffffffffffff8111801561090757600080fd5b50604051908082528060200260200182016040528015610931578160200160208202803683370190505b50905061093e8385610b5e565b8160008151811061094b57fe5b602090810291909101015260015b86811015610a705761097089828151811061087057fe5b909650945082861415806109d9575089818151811061098b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a60018303815181106109b857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610a47576000808b83815181106109ed57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000205493508592505b610a518486610b5e565b828281518110610a5d57fe5b6020908102919091010152600101610959565b5098975050505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6008810491600790911690565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6020810282901c63ffffffff1692915050565b3373ffffffffffffffffffffffffffffffffffffffff86161480610b9a5750610b9a8533610b23565b610bef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806119566037913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611ad46038913960400191505060405180910390fd5b610c6785858585611343565b6107f7858585855a866113e7565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b815181518114610d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061198d6042913960600191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610d565750600081115b15610f2857600080610d6e8560008151811061087057fe5b73ffffffffffffffffffffffffffffffffffffffff8916600090815260208181526040808320858452909152812054875193955091935091610dc69190849088908590610db757fe5b602002602001015160016115d8565b73ffffffffffffffffffffffffffffffffffffffff881660009081526020818152604080832087845290915281205487519293509091610e1c9190859089908590610e0d57fe5b602002602001015160006115d8565b90508360015b86811015610ed657610e3989828151811061087057fe5b9096509450818614610ea85773ffffffffffffffffffffffffffffffffffffffff8b811660009081526020818152604080832086845280835281842098909855928d16825281815282822094825284815282822095909555878152948452808520549290935291909220549084905b610eb984868a8481518110610db757fe5b9350610ecc83868a8481518110610e0d57fe5b9250600101610e22565b505073ffffffffffffffffffffffffffffffffffffffff808a16600090815260208181526040808320888452825280832095909555918a16815280825283812095815294905292209190915550610fc5565b60005b81811015610fc357828181518110610f3f57fe5b6020026020010151610f6487868481518110610f5757fe5b6020026020010151610639565b1015610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180611a576036913960400191505060405180910390fd5b600101610f2b565b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611071578181015183820152602001611059565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156110b0578181015183820152602001611098565b5050505090500194505050505060405180910390a45050505050565b6110eb8573ffffffffffffffffffffffffffffffffffffffff166117eb565b1561133b5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156111a357818101518382015260200161118b565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156111e25781810151838201526020016111ca565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561121e578181015183820152602001611206565b50505050905090810190601f16801561124b5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561127057600080fd5b5087f1158015611284573d6000803e3d6000fd5b50505050506040513d602081101561129b57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604c8152602001806119cf604c913960600191505060405180910390fd5b505b505050505050565b6113508483836001611825565b61135d8383836000611825565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051808381526020018281526020019250505060405180910390a450505050565b6114068573ffffffffffffffffffffffffffffffffffffffff166117eb565b1561133b5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156114bf5781810151838201526020016114a7565b50505050905090810190601f1680156114ec5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561150f57600080fd5b5087f1158015611523573d6000803e3d6000fd5b50505050506040513d602081101561153a57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611339576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526047815260200180611a8d6047913960600191505060405180910390fd5b60006020840263ffffffff828460018111156115f057fe5b14156116be5784821b8701925086831015611656576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611b516032913960400191505060405180910390fd5b64010000000087831c82168601106116b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611b516032913960400191505060405180910390fd5b6117e1565b60018460018111156116cc57fe5b14156117905784821b8703925086831115611732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806119236033913960400191505060405180910390fd5b84818389901c1610156116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806119236033913960400191505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180611b0c6045913960600191505060405180910390fd5b5050949350505050565b6000813f801580159061181e57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b60008061183185610b16565b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091529020549193509150611871908286866115d8565b73ffffffffffffffffffffffffffffffffffffffff90961660009081526020818152604080832094835293905291909120949094555050505056fe455243313135355061636b656442616c616e63652362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e475448455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20554e444552464c4f57455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20554e444552464c4f57455243313135355061636b656442616c616e6365235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20494e56414c49445f42494e5f57524954455f4f5045524154494f4e455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a204f564552464c4f57a2646970667358221220990da772d71e391d91ab8e0405554dbded6f6a2556cc947b51efe8a34c6277b164736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0xEAEC5F81 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x561 JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0xDB90E83C EQ PUSH2 0x4CD JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x31B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x639 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x6F3 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x7FE SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x466 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xA7D JUMP JUMPDEST PUSH2 0x4EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB23 JUMP JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xB71 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x647 DUP5 PUSH2 0xB16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x685 SWAP1 DUP3 PUSH2 0xB5E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x6E2 JUMPI POP PUSH1 0x1 PUSH2 0x6EE JUMP JUMPDEST PUSH2 0x6EB DUP3 PUSH2 0xC75 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x71C JUMPI POP PUSH2 0x71C DUP6 CALLER PUSH2 0xB23 JUMP JUMPDEST PUSH2 0x771 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A1B PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x7DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18E6 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E9 DUP6 DUP6 DUP6 DUP6 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x7F7 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x10CC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 SWAP1 DUP2 EQ PUSH2 0x85D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18AD PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x87D DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB16 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x893 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP4 SWAP1 POP PUSH1 0x60 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x907 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x931 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x93E DUP4 DUP6 PUSH2 0xB5E JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x94B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xA70 JUMPI PUSH2 0x970 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP3 DUP7 EQ ISZERO DUP1 PUSH2 0x9D9 JUMPI POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x9B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xA47 JUMPI PUSH1 0x0 DUP1 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9ED JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP4 POP DUP6 SWAP3 POP JUMPDEST PUSH2 0xA51 DUP5 DUP7 PUSH2 0xB5E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA5D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x959 JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x8 DUP2 DIV SWAP2 PUSH1 0x7 SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL DUP3 SWAP1 SHR PUSH4 0xFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0xB9A JUMPI POP PUSH2 0xB9A DUP6 CALLER PUSH2 0xB23 JUMP JUMPDEST PUSH2 0xBEF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1956 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1AD4 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC67 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1343 JUMP JUMPDEST PUSH2 0x7F7 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x13E7 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0xD1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x198D PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xD56 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 PUSH2 0xD6E DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0xDC6 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xDB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x15D8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0xE1C SWAP2 SWAP1 DUP6 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH2 0xE0D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH2 0x15D8 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xED6 JUMPI PUSH2 0xE39 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0xEA8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SWAP9 SWAP1 SWAP9 SSTORE SWAP3 DUP14 AND DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP5 DUP3 MSTORE DUP5 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP8 DUP2 MSTORE SWAP5 DUP5 MSTORE DUP1 DUP6 KECCAK256 SLOAD SWAP3 SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 SLOAD SWAP1 DUP5 SWAP1 JUMPDEST PUSH2 0xEB9 DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xDB7 JUMPI INVALID JUMPDEST SWAP4 POP PUSH2 0xECC DUP4 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE0D JUMPI INVALID JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xE22 JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP2 DUP11 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP4 DUP2 KECCAK256 SWAP6 DUP2 MSTORE SWAP5 SWAP1 MSTORE SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP PUSH2 0xFC5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFC3 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xF3F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xF64 DUP8 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xF57 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x639 JUMP JUMPDEST LT ISZERO PUSH2 0xFBB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A57 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0xF2B JUMP JUMPDEST POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1071 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1059 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10B0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1098 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x10EB DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17EB JUMP JUMPDEST ISZERO PUSH2 0x133B JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11A3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x118B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11E2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11CA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x121E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1206 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x124B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1284 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x129B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1339 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19CF PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1350 DUP5 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x135D DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1825 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1406 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17EB JUMP JUMPDEST ISZERO PUSH2 0x133B JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x14EC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x150F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1523 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1339 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A8D PUSH1 0x47 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP5 MUL PUSH4 0xFFFFFFFF DUP3 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x15F0 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x16BE JUMPI DUP5 DUP3 SHL DUP8 ADD SWAP3 POP DUP7 DUP4 LT ISZERO PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B51 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH5 0x100000000 DUP8 DUP4 SHR DUP3 AND DUP7 ADD LT PUSH2 0x16B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B51 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17E1 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x16CC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1790 JUMPI DUP5 DUP3 SHL DUP8 SUB SWAP3 POP DUP7 DUP4 GT ISZERO PUSH2 0x1732 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1923 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 DUP2 DUP4 DUP10 SWAP1 SHR AND LT ISZERO PUSH2 0x16B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1923 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B0C PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x181E JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 EQ ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1831 DUP6 PUSH2 0xB16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x1871 SWAP1 DUP3 DUP7 DUP7 PUSH2 0x15D8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH13 0x616E63654F6642617463683A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20554E444552464C4F JUMPI GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20494E56414C49445F4152524159535F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20554E444552464C4F57455243313135 CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20494E56414C49445F TIMESTAMP 0x49 0x4E 0x5F JUMPI MSTORE 0x49 SLOAD GASLIMIT 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x49 0x4F 0x4E GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A204F564552464C4F57 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP10 0xD 0xA7 PUSH19 0xD71E391D91AB8E0405554DBDED6F6A2556CC94 PUSH28 0x51EFE8A34C6277B164736F6C63430007040033000000000000000000 ",
              "sourceMap": "270:4445:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9699:261:26;;;;;;;;;;;;;;;;-1:-1:-1;9699:261:26;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15216:226;;;;;;;;;;;;;;;;-1:-1:-1;15216:226:26;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3444:547;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3444:547:26;;;;;;;;-1:-1:-1;3444:547:26;;-1:-1:-1;;3444:547:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3444:547:26;;;;;;;;-1:-1:-1;3444:547:26;;-1:-1:-1;;3444:547:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3444:547:26;;-1:-1:-1;3444:547:26;;-1:-1:-1;;;;;3444:547:26:i;:::-;;10318:1013;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10318:1013:26;;;;;;;;-1:-1:-1;10318:1013:26;;-1:-1:-1;;10318:1013:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10318:1013:26;;-1:-1:-1;10318:1013:26;;-1:-1:-1;;;;;10318:1013:26:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8707:230;;;;;;;;;;;;;;;;-1:-1:-1;8707:230:26;;;;;;;;;;;:::i;14001:189::-;;;;;;;;;;;;;;;;-1:-1:-1;14001:189:26;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9199:160;;;;;;;;;;;;;;;;-1:-1:-1;9199:160:26;;;;;;;;;;;:::i;14447:432::-;;;;;;;;;;;;;;;;-1:-1:-1;14447:432:26;;;;;;;:::i;2360:598::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2360:598:26;;-1:-1:-1;2360:598:26;;-1:-1:-1;;;;;2360:598:26:i;9699:261::-;9781:7;9798:11;9815:13;9881:18;9895:3;9881:13;:18::i;:::-;9926:16;;;:8;:16;;;;;;;;;;;:21;;;;;;;;;9866:33;;-1:-1:-1;9866:33:26;-1:-1:-1;9912:43:26;;9866:33;9912:13;:43::i;:::-;9905:50;9699:261;-1:-1:-1;;;;;9699:261:26:o;15216:226::-;15302:4;15318:42;;;15334:26;15318:42;15314:74;;;-1:-1:-1;15377:4:26;15370:11;;15314:74;15400:37;15424:12;15400:23;:37::i;:::-;15393:44;;15216:226;;;;:::o;3444:547::-;3630:10;:19;;;;;3629:60;;;3654:35;3671:5;3678:10;3654:16;:35::i;:::-;3621:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3768:17;;;3760:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3857:50;3880:5;3887:3;3892:4;3898:8;3857:22;:50::i;:::-;3913:73;3941:5;3948:3;3953:4;3959:8;3969:9;3980:5;3913:27;:73::i;:::-;3444:547;;;;;:::o;10318:1013::-;10470:14;;10510:11;;10425:16;;10470:14;10498:23;;10490:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10611:11;10624:13;10641:22;10655:4;10660:1;10655:7;;;;;;;;;;;;;;10641:13;:22::i;:::-;10610:53;;;;10669:19;10691:8;:20;10700:7;10708:1;10700:10;;;;;;;;;;;;;;10691:20;;;;;;;;;;;;;;;:25;10712:3;10691:25;;;;;;;;;;;;10669:47;;10722:16;10741:3;10722:22;;10773:30;10820:8;10806:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10806:23:26;;10773:56;;10854:33;10868:11;10881:5;10854:13;:33::i;:::-;10835:13;10849:1;10835:16;;;;;;;;;;;;;;;;;:52;10955:1;10938:362;10962:8;10958:1;:12;10938:362;;;11000:22;11014:4;11019:1;11014:7;;;;;;;11000:22;10985:37;;-1:-1:-1;10985:37:26;-1:-1:-1;11104:15:26;;;;;:45;;;11139:7;11147:1;11139:10;;;;;;;;;;;;;;11123:26;;:7;11133:1;11131;:3;11123:12;;;;;;;;;;;;;;:26;;;;11104:45;11100:133;;;11175:8;:20;11184:7;11192:1;11184:10;;;;;;;;;;;;;;11175:20;;;;;;;;;;;;;;;:25;11196:3;11175:25;;;;;;;;;;;;11161:39;;11221:3;11210:14;;11100:133;11260:33;11274:11;11287:5;11260:13;:33::i;:::-;11241:13;11255:1;11241:16;;;;;;;;;;;;;;;;;:52;10972:3;;10938:362;;;-1:-1:-1;11313:13:26;10318:1013;-1:-1:-1;;;;;;;;10318:1013:26:o;8707:230::-;8839:10;8829:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;8884:48;;;;;;;8829:32;;8839:10;8884:48;;;;;;;;;;;8707:230;;:::o;14001:189::-;1505:19;14104:21;;;14139;;;;;14001:189::o;9199:160::-;9326:17;;;;9294:15;9326:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;9199:160::o;14447:432::-;1395:2;14806:22;;14842:24;;;14725:33;14841;14447:432;;;;:::o;2360:598::-;2521:10;:19;;;;;2520:60;;;2545:35;2562:5;2569:10;2545:16;:35::i;:::-;2512:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:17;;;2646:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2838:43;2856:5;2863:3;2868;2873:7;2838:17;:43::i;:::-;2887:66;2910:5;2917:3;2922;2927:7;2936:9;2947:5;2887:22;:66::i;259:148:28:-;355:47;;;371:31;355:47;259:148;;;:::o;5742:1939:26:-;5893:11;;5964:15;;5951:28;;5943:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6070:3;6061:12;;:5;:12;;;;:29;;;;;6089:1;6077:9;:13;6061:29;6057:1537;;;6169:11;6182:13;6199:22;6213:4;6218:1;6213:7;;;;;;;6199:22;6345:15;;;6307;6345;;;;;;;;;;;:20;;;;;;;;;6374:11;;6168:53;;-1:-1:-1;6168:53:26;;-1:-1:-1;6307:15:26;6325:77;;6345:20;6168:53;;6374:8;;6307:15;;6374:11;;;;;;;;;;6387:14;6325:19;:77::i;:::-;6446:13;;;6410;6446;;;;;;;;;;;:18;;;;;;;;;6473:11;;6307:95;;-1:-1:-1;6410:13:26;;6426:75;;6446:18;6466:5;;6473:8;;6410:13;;6473:11;;;;;;;;;;6486:14;6426:19;:75::i;:::-;6410:91;-1:-1:-1;6554:3:26;6583:1;6566:649;6590:9;6586:1;:13;6566:649;;;6631:22;6645:4;6650:1;6645:7;;;;;;;6631:22;6616:37;;-1:-1:-1;6616:37:26;-1:-1:-1;6690:14:26;;;6686:323;;6770:15;;;;:8;:15;;;;;;;;;;;:24;;;;;;;;;:34;;;;6816:13;;;;;;;;;;;:22;;;;;;;;;:30;;;;6869:20;;;;;;;;;;6909:18;;;;;;;;;;6869:20;;6686:323;7062:64;7082:7;7091:5;7098:8;7107:1;7098:11;;;;;;;7062:64;7052:74;;7144:62;7164:5;7171;7178:8;7187:1;7178:11;;;;;;;7144:62;7136:70;-1:-1:-1;6601:3:26;;6566:649;;;-1:-1:-1;;7271:15:26;;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:30;;;;7309:13;;;;;;;;;;;:18;;;;;;;;:26;;;;-1:-1:-1;6057:1537:26;;;7427:9;7422:166;7446:9;7442:1;:13;7422:166;;;7509:8;7518:1;7509:11;;;;;;;;;;;;;;7480:25;7490:5;7497:4;7502:1;7497:7;;;;;;;;;;;;;;7480:9;:25::i;:::-;:40;;7472:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7457:3;;7422:166;;;;6057:1537;7656:3;7623:53;;7649:5;7623:53;;7637:10;7623:53;;;7661:4;7667:8;7623:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5742:1939;;;;;:::o;7794:516::-;8015:16;:3;:14;;;:16::i;:::-;8011:295;;;8041:13;8079:3;8057:49;;;8112:9;8123:10;8135:5;8142:4;8148:8;8158:5;8057:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8057:107:26;;-1:-1:-1;8180:38:26;;;8190:28;8180:38;8172:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8011:295;;7794:516;;;;;;:::o;4381:385::-;4509:53;4526:5;4533:3;4538:7;4547:14;4509:16;:53::i;:::-;4599;4616:3;4623;4628:7;4637:14;4599:16;:53::i;:::-;4743:3;4709:52;;4736:5;4709:52;;4724:10;4709:52;;;4748:3;4753:7;4709:52;;;;;;;;;;;;;;;;;;;;;;;;4381:385;;;;:::o;4874:468::-;5066:16;:3;:14;;;:16::i;:::-;5062:276;;;5092:13;5130:3;5108:44;;;5157:9;5168:10;5180:5;5187:3;5192:7;5201:5;5108:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5108:99:26;;-1:-1:-1;5223:32:26;;;5233:22;5223:32;5215:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12664:1162;12796:20;1395:2;12842:22;;12885:33;12796:20;12929:10;:28;;;;;;;;;12925:871;;;12996:16;;;12982:31;;;-1:-1:-1;13029:26:26;;;;13021:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13178:16;13137:19;;;13136:28;;13135:40;;:59;13118:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12925:871;;;13331:14;13317:10;:28;;;;;;;;;13313:483;;;13384:16;;;13370:31;;;-1:-1:-1;13417:26:26;;;;13409:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13558:7;13549:4;13540:5;13526:10;:19;;13525:28;13524:41;;13507:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13313:483;13693:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13313:483;13802:19;;12664:1162;;;;;;:::o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;890:43;882:52;541:398;-1:-1:-1;;;541:398:27:o;11845:352:26:-;11963:11;11980:13;12047:18;12061:3;12047:13;:18::i;:::-;12140;;;:8;:18;;;;;;;;;;;:23;;;;;;;;;12032:33;;-1:-1:-1;12032:33:26;-1:-1:-1;12120:72:26;;12032:33;12172:7;12181:10;12120:19;:72::i;:::-;12094:18;;;;:8;:18;;;;;;;;;;;:23;;;;;;;;;;:98;;;;-1:-1:-1;;;;11845:352:26:o"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "getIDBinIndex(uint256)": "db90e83c",
              "getValueInBin(uint256,uint256)": "eaec5f81",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "multi-token-standard/contracts/tokens/ERC1155PackedBalance/ERC1155PackedBalance.sol": {
        "ERC1155PackedBalance": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "ApprovalForAll",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "indexed": false,
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "TransferBatch",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                }
              ],
              "name": "TransferSingle",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "balanceOf",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address[]",
                  "name": "_owners",
                  "type": "address[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                }
              ],
              "name": "balanceOfBatch",
              "outputs": [
                {
                  "internalType": "uint256[]",
                  "name": "",
                  "type": "uint256[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                }
              ],
              "name": "getIDBinIndex",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "bin",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "index",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "_binValues",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_index",
                  "type": "uint256"
                }
              ],
              "name": "getValueInBin",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_owner",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                }
              ],
              "name": "isApprovedForAll",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOperator",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "_amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "_to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "_id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "_amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_operator",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "_approved",
                  "type": "bool"
                }
              ],
              "name": "setApprovalForAll",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50611bb8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a25760003560e01c8063a22cb46511610076578063e985e9c51161005b578063e985e9c514610503578063eaec5f811461053e578063f242432a14610561576100a2565b8063a22cb46514610492578063db90e83c146104cd576100a2565b8062fdd58e146100a757806301ffc9a7146100f25780632eb2c2d6146101455780634e1273f41461031b575b600080fd5b6100e0600480360360408110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610639565b60408051918252519081900360200190f35b6101316004803603602081101561010857600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661068e565b604080519115158252519081900360200190f35b610319600480360360a081101561015b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561019c57600080fd5b8201836020820111156101ae57600080fd5b803590602001918460208302840111640100000000831117156101d057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561022057600080fd5b82018360208201111561023257600080fd5b8035906020019184602083028401116401000000008311171561025457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156102a457600080fd5b8201836020820111156102b657600080fd5b803590602001918460018302840111640100000000831117156102d857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106f3945050505050565b005b6104426004803603604081101561033157600080fd5b81019060208101813564010000000081111561034c57600080fd5b82018360208201111561035e57600080fd5b8035906020019184602083028401116401000000008311171561038057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184602083028401116401000000008311171561040457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506107fe945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047e578181015183820152602001610466565b505050509050019250505060405180910390f35b610319600480360360408110156104a857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610a7d565b6104ea600480360360208110156104e357600080fd5b5035610b16565b6040805192835260208301919091528051918290030190f35b6101316004803603604081101561051957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b23565b6100e06004803603604081101561055457600080fd5b5080359060200135610b5e565b610319600480360360a081101561057757600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460018302840111640100000000831117156105f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b71945050505050565b600080600061064784610b16565b73ffffffffffffffffffffffffffffffffffffffff871660009081526020818152604080832085845290915290205491935091506106859082610b5e565b95945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156106e2575060016106ee565b6106eb82610c75565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061071c575061071c8533610b23565b610771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180611a1b603c913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806118e6603d913960400191505060405180910390fd5b6107e985858585610cbf565b6107f7858585855a866110cc565b5050505050565b8151815160609190811461085d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806118ad6039913960400191505060405180910390fd5b60008061087d8560008151811061087057fe5b6020026020010151610b16565b9150915060008060008860008151811061089357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020549050600083905060608567ffffffffffffffff8111801561090757600080fd5b50604051908082528060200260200182016040528015610931578160200160208202803683370190505b50905061093e8385610b5e565b8160008151811061094b57fe5b602090810291909101015260015b86811015610a705761097089828151811061087057fe5b909650945082861415806109d9575089818151811061098b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a60018303815181106109b857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610a47576000808b83815181106109ed57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000205493508592505b610a518486610b5e565b828281518110610a5d57fe5b6020908102919091010152600101610959565b5098975050505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6008810491600790911690565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6020810282901c63ffffffff1692915050565b3373ffffffffffffffffffffffffffffffffffffffff86161480610b9a5750610b9a8533610b23565b610bef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806119566037913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611ad46038913960400191505060405180910390fd5b610c6785858585611343565b6107f7858585855a866113e7565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b815181518114610d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061198d6042913960600191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610d565750600081115b15610f2857600080610d6e8560008151811061087057fe5b73ffffffffffffffffffffffffffffffffffffffff8916600090815260208181526040808320858452909152812054875193955091935091610dc69190849088908590610db757fe5b602002602001015160016115d8565b73ffffffffffffffffffffffffffffffffffffffff881660009081526020818152604080832087845290915281205487519293509091610e1c9190859089908590610e0d57fe5b602002602001015160006115d8565b90508360015b86811015610ed657610e3989828151811061087057fe5b9096509450818614610ea85773ffffffffffffffffffffffffffffffffffffffff8b811660009081526020818152604080832086845280835281842098909855928d16825281815282822094825284815282822095909555878152948452808520549290935291909220549084905b610eb984868a8481518110610db757fe5b9350610ecc83868a8481518110610e0d57fe5b9250600101610e22565b505073ffffffffffffffffffffffffffffffffffffffff808a16600090815260208181526040808320888452825280832095909555918a16815280825283812095815294905292209190915550610fc5565b60005b81811015610fc357828181518110610f3f57fe5b6020026020010151610f6487868481518110610f5757fe5b6020026020010151610639565b1015610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180611a576036913960400191505060405180910390fd5b600101610f2b565b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611071578181015183820152602001611059565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156110b0578181015183820152602001611098565b5050505090500194505050505060405180910390a45050505050565b6110eb8573ffffffffffffffffffffffffffffffffffffffff166117eb565b1561133b5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156111a357818101518382015260200161118b565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156111e25781810151838201526020016111ca565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561121e578181015183820152602001611206565b50505050905090810190601f16801561124b5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561127057600080fd5b5087f1158015611284573d6000803e3d6000fd5b50505050506040513d602081101561129b57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604c8152602001806119cf604c913960600191505060405180910390fd5b505b505050505050565b6113508483836001611825565b61135d8383836000611825565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051808381526020018281526020019250505060405180910390a450505050565b6114068573ffffffffffffffffffffffffffffffffffffffff166117eb565b1561133b5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156114bf5781810151838201526020016114a7565b50505050905090810190601f1680156114ec5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561150f57600080fd5b5087f1158015611523573d6000803e3d6000fd5b50505050506040513d602081101561153a57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611339576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526047815260200180611a8d6047913960600191505060405180910390fd5b60006020840263ffffffff828460018111156115f057fe5b14156116be5784821b8701925086831015611656576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611b516032913960400191505060405180910390fd5b64010000000087831c82168601106116b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611b516032913960400191505060405180910390fd5b6117e1565b60018460018111156116cc57fe5b14156117905784821b8703925086831115611732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806119236033913960400191505060405180910390fd5b84818389901c1610156116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806119236033913960400191505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180611b0c6045913960600191505060405180910390fd5b5050949350505050565b6000813f801580159061181e57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b60008061183185610b16565b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091529020549193509150611871908286866115d8565b73ffffffffffffffffffffffffffffffffffffffff90961660009081526020818152604080832094835293905291909120949094555050505056fe455243313135355061636b656442616c616e63652362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e475448455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20554e444552464c4f57455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20554e444552464c4f57455243313135355061636b656442616c616e6365235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20494e56414c49445f42494e5f57524954455f4f5045524154494f4e455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a204f564552464c4f57a2646970667358221220cd9a670076223e67342e3750fc7f38ad34edcf2c09e07ccb2c2785ae562d493964736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BB8 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0xEAEC5F81 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x561 JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0xDB90E83C EQ PUSH2 0x4CD JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x31B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x639 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x6F3 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x7FE SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x466 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xA7D JUMP JUMPDEST PUSH2 0x4EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB23 JUMP JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xB71 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x647 DUP5 PUSH2 0xB16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x685 SWAP1 DUP3 PUSH2 0xB5E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x6E2 JUMPI POP PUSH1 0x1 PUSH2 0x6EE JUMP JUMPDEST PUSH2 0x6EB DUP3 PUSH2 0xC75 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x71C JUMPI POP PUSH2 0x71C DUP6 CALLER PUSH2 0xB23 JUMP JUMPDEST PUSH2 0x771 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A1B PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x7DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18E6 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E9 DUP6 DUP6 DUP6 DUP6 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x7F7 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x10CC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 SWAP1 DUP2 EQ PUSH2 0x85D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18AD PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x87D DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB16 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x893 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP4 SWAP1 POP PUSH1 0x60 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x907 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x931 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x93E DUP4 DUP6 PUSH2 0xB5E JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x94B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xA70 JUMPI PUSH2 0x970 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP3 DUP7 EQ ISZERO DUP1 PUSH2 0x9D9 JUMPI POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x9B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xA47 JUMPI PUSH1 0x0 DUP1 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9ED JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP4 POP DUP6 SWAP3 POP JUMPDEST PUSH2 0xA51 DUP5 DUP7 PUSH2 0xB5E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA5D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x959 JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x8 DUP2 DIV SWAP2 PUSH1 0x7 SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL DUP3 SWAP1 SHR PUSH4 0xFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0xB9A JUMPI POP PUSH2 0xB9A DUP6 CALLER PUSH2 0xB23 JUMP JUMPDEST PUSH2 0xBEF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1956 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1AD4 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC67 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1343 JUMP JUMPDEST PUSH2 0x7F7 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x13E7 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0xD1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x198D PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xD56 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 PUSH2 0xD6E DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0xDC6 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xDB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x15D8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0xE1C SWAP2 SWAP1 DUP6 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH2 0xE0D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH2 0x15D8 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xED6 JUMPI PUSH2 0xE39 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0xEA8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SWAP9 SWAP1 SWAP9 SSTORE SWAP3 DUP14 AND DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP5 DUP3 MSTORE DUP5 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP8 DUP2 MSTORE SWAP5 DUP5 MSTORE DUP1 DUP6 KECCAK256 SLOAD SWAP3 SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 SLOAD SWAP1 DUP5 SWAP1 JUMPDEST PUSH2 0xEB9 DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xDB7 JUMPI INVALID JUMPDEST SWAP4 POP PUSH2 0xECC DUP4 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE0D JUMPI INVALID JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xE22 JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP2 DUP11 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP4 DUP2 KECCAK256 SWAP6 DUP2 MSTORE SWAP5 SWAP1 MSTORE SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP PUSH2 0xFC5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFC3 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xF3F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xF64 DUP8 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xF57 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x639 JUMP JUMPDEST LT ISZERO PUSH2 0xFBB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A57 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0xF2B JUMP JUMPDEST POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1071 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1059 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10B0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1098 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x10EB DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17EB JUMP JUMPDEST ISZERO PUSH2 0x133B JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11A3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x118B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11E2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11CA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x121E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1206 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x124B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1284 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x129B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1339 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19CF PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1350 DUP5 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x135D DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1825 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1406 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17EB JUMP JUMPDEST ISZERO PUSH2 0x133B JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x14EC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x150F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1523 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1339 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A8D PUSH1 0x47 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP5 MUL PUSH4 0xFFFFFFFF DUP3 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x15F0 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x16BE JUMPI DUP5 DUP3 SHL DUP8 ADD SWAP3 POP DUP7 DUP4 LT ISZERO PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B51 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH5 0x100000000 DUP8 DUP4 SHR DUP3 AND DUP7 ADD LT PUSH2 0x16B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B51 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17E1 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x16CC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1790 JUMPI DUP5 DUP3 SHL DUP8 SUB SWAP3 POP DUP7 DUP4 GT ISZERO PUSH2 0x1732 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1923 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 DUP2 DUP4 DUP10 SWAP1 SHR AND LT ISZERO PUSH2 0x16B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1923 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B0C PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x181E JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 EQ ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1831 DUP6 PUSH2 0xB16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x1871 SWAP1 DUP3 DUP7 DUP7 PUSH2 0x15D8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH13 0x616E63654F6642617463683A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20554E444552464C4F JUMPI GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20494E56414C49445F4152524159535F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20554E444552464C4F57455243313135 CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20494E56414C49445F TIMESTAMP 0x49 0x4E 0x5F JUMPI MSTORE 0x49 SLOAD GASLIMIT 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x49 0x4F 0x4E GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A204F564552464C4F57 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCD SWAP11 PUSH8 0x76223E67342E37 POP 0xFC PUSH32 0x38AD34EDCF2C09E07CCB2C2785AE562D493964736F6C63430007040033000000 ",
              "sourceMap": "815:14629:26:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100a25760003560e01c8063a22cb46511610076578063e985e9c51161005b578063e985e9c514610503578063eaec5f811461053e578063f242432a14610561576100a2565b8063a22cb46514610492578063db90e83c146104cd576100a2565b8062fdd58e146100a757806301ffc9a7146100f25780632eb2c2d6146101455780634e1273f41461031b575b600080fd5b6100e0600480360360408110156100bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610639565b60408051918252519081900360200190f35b6101316004803603602081101561010857600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661068e565b604080519115158252519081900360200190f35b610319600480360360a081101561015b57600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169181019060608101604082013564010000000081111561019c57600080fd5b8201836020820111156101ae57600080fd5b803590602001918460208302840111640100000000831117156101d057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561022057600080fd5b82018360208201111561023257600080fd5b8035906020019184602083028401116401000000008311171561025457600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156102a457600080fd5b8201836020820111156102b657600080fd5b803590602001918460018302840111640100000000831117156102d857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106f3945050505050565b005b6104426004803603604081101561033157600080fd5b81019060208101813564010000000081111561034c57600080fd5b82018360208201111561035e57600080fd5b8035906020019184602083028401116401000000008311171561038057600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092959493602081019350359150506401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184602083028401116401000000008311171561040457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506107fe945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047e578181015183820152602001610466565b505050509050019250505060405180910390f35b610319600480360360408110156104a857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515610a7d565b6104ea600480360360208110156104e357600080fd5b5035610b16565b6040805192835260208301919091528051918290030190f35b6101316004803603604081101561051957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610b23565b6100e06004803603604081101561055457600080fd5b5080359060200135610b5e565b610319600480360360a081101561057757600080fd5b73ffffffffffffffffffffffffffffffffffffffff823581169260208101359091169160408201359160608101359181019060a0810160808201356401000000008111156105c457600080fd5b8201836020820111156105d657600080fd5b803590602001918460018302840111640100000000831117156105f857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b71945050505050565b600080600061064784610b16565b73ffffffffffffffffffffffffffffffffffffffff871660009081526020818152604080832085845290915290205491935091506106859082610b5e565b95945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014156106e2575060016106ee565b6106eb82610c75565b90505b919050565b3373ffffffffffffffffffffffffffffffffffffffff8616148061071c575061071c8533610b23565b610771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180611a1b603c913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff84166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603d8152602001806118e6603d913960400191505060405180910390fd5b6107e985858585610cbf565b6107f7858585855a866110cc565b5050505050565b8151815160609190811461085d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260398152602001806118ad6039913960400191505060405180910390fd5b60008061087d8560008151811061087057fe5b6020026020010151610b16565b9150915060008060008860008151811061089357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000848152602001908152602001600020549050600083905060608567ffffffffffffffff8111801561090757600080fd5b50604051908082528060200260200182016040528015610931578160200160208202803683370190505b50905061093e8385610b5e565b8160008151811061094b57fe5b602090810291909101015260015b86811015610a705761097089828151811061087057fe5b909650945082861415806109d9575089818151811061098b57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168a60018303815181106109b857fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1614155b15610a47576000808b83815181106109ed57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008781526020019081526020016000205493508592505b610a518486610b5e565b828281518110610a5d57fe5b6020908102919091010152600101610959565b5098975050505050505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6008810491600790911690565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b6020810282901c63ffffffff1692915050565b3373ffffffffffffffffffffffffffffffffffffffff86161480610b9a5750610b9a8533610b23565b610bef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260378152602001806119566037913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8416610c5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180611ad46038913960400191505060405180910390fd5b610c6785858585611343565b6107f7858585855a866113e7565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f01ffc9a70000000000000000000000000000000000000000000000000000000014919050565b815181518114610d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604281526020018061198d6042913960600191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015610d565750600081115b15610f2857600080610d6e8560008151811061087057fe5b73ffffffffffffffffffffffffffffffffffffffff8916600090815260208181526040808320858452909152812054875193955091935091610dc69190849088908590610db757fe5b602002602001015160016115d8565b73ffffffffffffffffffffffffffffffffffffffff881660009081526020818152604080832087845290915281205487519293509091610e1c9190859089908590610e0d57fe5b602002602001015160006115d8565b90508360015b86811015610ed657610e3989828151811061087057fe5b9096509450818614610ea85773ffffffffffffffffffffffffffffffffffffffff8b811660009081526020818152604080832086845280835281842098909855928d16825281815282822094825284815282822095909555878152948452808520549290935291909220549084905b610eb984868a8481518110610db757fe5b9350610ecc83868a8481518110610e0d57fe5b9250600101610e22565b505073ffffffffffffffffffffffffffffffffffffffff808a16600090815260208181526040808320888452825280832095909555918a16815280825283812095815294905292209190915550610fc5565b60005b81811015610fc357828181518110610f3f57fe5b6020026020010151610f6487868481518110610f5757fe5b6020026020010151610639565b1015610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180611a576036913960400191505060405180910390fd5b600101610f2b565b505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611071578181015183820152602001611059565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156110b0578181015183820152602001611098565b5050505090500194505050505060405180910390a45050505050565b6110eb8573ffffffffffffffffffffffffffffffffffffffff166117eb565b1561133b5760008573ffffffffffffffffffffffffffffffffffffffff1663bc197c8184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b838110156111a357818101518382015260200161118b565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156111e25781810151838201526020016111ca565b50505050905001848103825285818151815260200191508051906020019080838360005b8381101561121e578181015183820152602001611206565b50505050905090810190601f16801561124b5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600088803b15801561127057600080fd5b5087f1158015611284573d6000803e3d6000fd5b50505050506040513d602081101561129b57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604c8152602001806119cf604c913960600191505060405180910390fd5b505b505050505050565b6113508483836001611825565b61135d8383836000611825565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628585604051808381526020018281526020019250505060405180910390a450505050565b6114068573ffffffffffffffffffffffffffffffffffffffff166117eb565b1561133b5760008573ffffffffffffffffffffffffffffffffffffffff1663f23a6e6184338a8989886040518763ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156114bf5781810151838201526020016114a7565b50505050905090810190601f1680156114ec5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600088803b15801561150f57600080fd5b5087f1158015611523573d6000803e3d6000fd5b50505050506040513d602081101561153a57600080fd5b505190507fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611339576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526047815260200180611a8d6047913960600191505060405180910390fd5b60006020840263ffffffff828460018111156115f057fe5b14156116be5784821b8701925086831015611656576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611b516032913960400191505060405180910390fd5b64010000000087831c82168601106116b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526032815260200180611b516032913960400191505060405180910390fd5b6117e1565b60018460018111156116cc57fe5b14156117905784821b8703925086831115611732576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806119236033913960400191505060405180910390fd5b84818389901c1610156116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806119236033913960400191505060405180910390fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526045815260200180611b0c6045913960600191505060405180910390fd5b5050949350505050565b6000813f801580159061181e57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114155b9392505050565b60008061183185610b16565b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081815260408083208584529091529020549193509150611871908286866115d8565b73ffffffffffffffffffffffffffffffffffffffff90961660009081526020818152604080832094835293905291909120949094555050505056fe455243313135355061636b656442616c616e63652362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e475448455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20554e444552464c4f57455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e475448455243313135355061636b656442616c616e6365235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20554e444552464c4f57455243313135355061636b656442616c616e6365235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20494e56414c49445f42494e5f57524954455f4f5045524154494f4e455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a204f564552464c4f57a2646970667358221220cd9a670076223e67342e3750fc7f38ad34edcf2c09e07ccb2c2785ae562d493964736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA22CB465 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0xE985E9C5 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0xEAEC5F81 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x561 JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x492 JUMPI DUP1 PUSH4 0xDB90E83C EQ PUSH2 0x4CD JUMPI PUSH2 0xA2 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xA7 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xF2 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x145 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x31B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xBD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x639 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x108 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH2 0x68E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x15B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x6F3 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x442 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x331 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x35E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x7FE SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x47E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x466 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xA7D JUMP JUMPDEST PUSH2 0x4EA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xB16 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x131 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xB23 JUMP JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB5E JUMP JUMPDEST PUSH2 0x319 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x577 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xB71 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x647 DUP5 PUSH2 0xB16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x685 SWAP1 DUP3 PUSH2 0xB5E JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP3 AND PUSH32 0xD9B67A2600000000000000000000000000000000000000000000000000000000 EQ ISZERO PUSH2 0x6E2 JUMPI POP PUSH1 0x1 PUSH2 0x6EE JUMP JUMPDEST PUSH2 0x6EB DUP3 PUSH2 0xC75 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0x71C JUMPI POP PUSH2 0x71C DUP6 CALLER PUSH2 0xB23 JUMP JUMPDEST PUSH2 0x771 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A1B PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0x7DD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3D DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18E6 PUSH1 0x3D SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7E9 DUP6 DUP6 DUP6 DUP6 PUSH2 0xCBF JUMP JUMPDEST PUSH2 0x7F7 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x10CC JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD PUSH1 0x60 SWAP2 SWAP1 DUP2 EQ PUSH2 0x85D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x39 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18AD PUSH1 0x39 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x87D DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xB16 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP9 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x893 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP1 POP PUSH1 0x0 DUP4 SWAP1 POP PUSH1 0x60 DUP6 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x907 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x931 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH2 0x93E DUP4 DUP6 PUSH2 0xB5E JUMP JUMPDEST DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x94B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xA70 JUMPI PUSH2 0x970 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP3 DUP7 EQ ISZERO DUP1 PUSH2 0x9D9 JUMPI POP DUP10 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x98B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP11 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x9B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xA47 JUMPI PUSH1 0x0 DUP1 DUP12 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x9ED JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD SWAP4 POP DUP6 SWAP3 POP JUMPDEST PUSH2 0xA51 DUP5 DUP7 PUSH2 0xB5E JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xA5D JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x959 JUMP JUMPDEST POP SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 AND DUP7 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 MLOAD SWAP1 DUP2 MSTORE SWAP1 MLOAD SWAP3 SWAP4 SWAP3 PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x8 DUP2 DIV SWAP2 PUSH1 0x7 SWAP1 SWAP2 AND SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL DUP3 SWAP1 SHR PUSH4 0xFFFFFFFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND EQ DUP1 PUSH2 0xB9A JUMPI POP PUSH2 0xB9A DUP6 CALLER PUSH2 0xB23 JUMP JUMPDEST PUSH2 0xBEF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1956 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH2 0xC5B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1AD4 PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC67 DUP6 DUP6 DUP6 DUP6 PUSH2 0x1343 JUMP JUMPDEST PUSH2 0x7F7 DUP6 DUP6 DUP6 DUP6 GAS DUP7 PUSH2 0x13E7 JUMP JUMPDEST PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 EQ SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP2 MLOAD DUP2 EQ PUSH2 0xD1A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x42 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x198D PUSH1 0x42 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO DUP1 ISZERO PUSH2 0xD56 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST ISZERO PUSH2 0xF28 JUMPI PUSH1 0x0 DUP1 PUSH2 0xD6E DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0xDC6 SWAP2 SWAP1 DUP5 SWAP1 DUP9 SWAP1 DUP6 SWAP1 PUSH2 0xDB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x1 PUSH2 0x15D8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD DUP8 MLOAD SWAP3 SWAP4 POP SWAP1 SWAP2 PUSH2 0xE1C SWAP2 SWAP1 DUP6 SWAP1 DUP10 SWAP1 DUP6 SWAP1 PUSH2 0xE0D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 PUSH2 0x15D8 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0xED6 JUMPI PUSH2 0xE39 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x870 JUMPI INVALID JUMPDEST SWAP1 SWAP7 POP SWAP5 POP DUP2 DUP7 EQ PUSH2 0xEA8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP12 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 SWAP9 SWAP1 SWAP9 SSTORE SWAP3 DUP14 AND DUP3 MSTORE DUP2 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP5 DUP3 MSTORE DUP5 DUP2 MSTORE DUP3 DUP3 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP8 DUP2 MSTORE SWAP5 DUP5 MSTORE DUP1 DUP6 KECCAK256 SLOAD SWAP3 SWAP1 SWAP4 MSTORE SWAP2 SWAP1 SWAP3 KECCAK256 SLOAD SWAP1 DUP5 SWAP1 JUMPDEST PUSH2 0xEB9 DUP5 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xDB7 JUMPI INVALID JUMPDEST SWAP4 POP PUSH2 0xECC DUP4 DUP7 DUP11 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xE0D JUMPI INVALID JUMPDEST SWAP3 POP PUSH1 0x1 ADD PUSH2 0xE22 JUMP JUMPDEST POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE SWAP2 DUP11 AND DUP2 MSTORE DUP1 DUP3 MSTORE DUP4 DUP2 KECCAK256 SWAP6 DUP2 MSTORE SWAP5 SWAP1 MSTORE SWAP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP PUSH2 0xFC5 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xFC3 JUMPI DUP3 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0xF3F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0xF64 DUP8 DUP7 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0xF57 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x639 JUMP JUMPDEST LT ISZERO PUSH2 0xFBB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A57 PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0xF2B JUMP JUMPDEST POP JUMPDEST DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP7 DUP7 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1071 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1059 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x10B0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1098 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x10EB DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17EB JUMP JUMPDEST ISZERO PUSH2 0x133B JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xBC197C81 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11A3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x118B JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11E2 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11CA JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x121E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1206 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x124B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1270 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1284 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x129B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xBC197C8100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1339 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x4C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19CF PUSH1 0x4C SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1350 DUP5 DUP4 DUP4 PUSH1 0x1 PUSH2 0x1825 JUMP JUMPDEST PUSH2 0x135D DUP4 DUP4 DUP4 PUSH1 0x0 PUSH2 0x1825 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 DUP6 DUP6 PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH2 0x1406 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x17EB JUMP JUMPDEST ISZERO PUSH2 0x133B JUMPI PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xF23A6E61 DUP5 CALLER DUP11 DUP10 DUP10 DUP9 PUSH1 0x40 MLOAD DUP8 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14BF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14A7 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x14EC JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x150F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP8 CALL ISZERO DUP1 ISZERO PUSH2 0x1523 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x153A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP2 AND PUSH32 0xF23A6E6100000000000000000000000000000000000000000000000000000000 EQ PUSH2 0x1339 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x47 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A8D PUSH1 0x47 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP5 MUL PUSH4 0xFFFFFFFF DUP3 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x15F0 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x16BE JUMPI DUP5 DUP3 SHL DUP8 ADD SWAP3 POP DUP7 DUP4 LT ISZERO PUSH2 0x1656 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B51 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH5 0x100000000 DUP8 DUP4 SHR DUP3 AND DUP7 ADD LT PUSH2 0x16B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B51 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x17E1 JUMP JUMPDEST PUSH1 0x1 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x16CC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x1790 JUMPI DUP5 DUP3 SHL DUP8 SUB SWAP3 POP DUP7 DUP4 GT ISZERO PUSH2 0x1732 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1923 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 DUP2 DUP4 DUP10 SWAP1 SHR AND LT ISZERO PUSH2 0x16B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1923 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x45 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B0C PUSH1 0x45 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 EXTCODEHASH DUP1 ISZERO DUP1 ISZERO SWAP1 PUSH2 0x181E JUMPI POP PUSH32 0xC5D2460186F7233C927E7DB2DCC703C0E500B653CA82273B7BFAD8045D85A470 DUP2 EQ ISZERO JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1831 DUP6 PUSH2 0xB16 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP6 DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP4 POP SWAP2 POP PUSH2 0x1871 SWAP1 DUP3 DUP7 DUP7 PUSH2 0x15D8 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP4 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 SWAP2 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE POP POP POP POP JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65236261 PUSH13 0x616E63654F6642617463683A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F COINBASE MSTORE MSTORE COINBASE MSIZE 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20554E444552464C4F JUMPI GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20494E56414C49445F4152524159535F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135354261746368526563 PUSH6 0x697665643A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x65426174636854 PUSH19 0x616E7366657246726F6D3A20494E56414C4944 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x4F MSTORE GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F73 PUSH2 0x6665 TIMESTAMP PUSH2 0x7463 PUSH9 0x5472616E7366657246 PUSH19 0x6F6D3A20554E444552464C4F57455243313135 CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F63 PUSH2 0x6C6C PUSH16 0x6E455243313135355265636569766564 GASPRICE KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F 0x4F 0x4E 0x5F MSTORE GASLIMIT NUMBER GASLIMIT 0x49 JUMP GASLIMIT 0x5F 0x4D GASLIMIT MSTORE8 MSTORE8 COINBASE SELFBALANCE GASLIMIT GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65237361 PUSH7 0x655472616E7366 PUSH6 0x7246726F6D3A KECCAK256 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE GASLIMIT NUMBER 0x49 POP 0x49 GASLIMIT 0x4E SLOAD GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A20494E56414C49445F TIMESTAMP 0x49 0x4E 0x5F JUMPI MSTORE 0x49 SLOAD GASLIMIT 0x5F 0x4F POP GASLIMIT MSTORE COINBASE SLOAD 0x49 0x4F 0x4E GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD POP PUSH2 0x636B PUSH6 0x6442616C616E PUSH4 0x65235F76 PUSH10 0x65775570646174654269 PUSH15 0x56616C75653A204F564552464C4F57 LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCD SWAP11 PUSH8 0x76223E67342E37 POP 0xFC PUSH32 0x38AD34EDCF2C09E07CCB2C2785AE562D493964736F6C63430007040033000000 ",
              "sourceMap": "815:14629:26:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9699:261;;;;;;;;;;;;;;;;-1:-1:-1;9699:261:26;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;15216:226;;;;;;;;;;;;;;;;-1:-1:-1;15216:226:26;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3444:547;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3444:547:26;;;;;;;;-1:-1:-1;3444:547:26;;-1:-1:-1;;3444:547:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3444:547:26;;;;;;;;-1:-1:-1;3444:547:26;;-1:-1:-1;;3444:547:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3444:547:26;;-1:-1:-1;3444:547:26;;-1:-1:-1;;;;;3444:547:26:i;:::-;;10318:1013;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10318:1013:26;;;;;;;;-1:-1:-1;10318:1013:26;;-1:-1:-1;;10318:1013:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10318:1013:26;;-1:-1:-1;10318:1013:26;;-1:-1:-1;;;;;10318:1013:26:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8707:230;;;;;;;;;;;;;;;;-1:-1:-1;8707:230:26;;;;;;;;;;;:::i;14001:189::-;;;;;;;;;;;;;;;;-1:-1:-1;14001:189:26;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9199:160;;;;;;;;;;;;;;;;-1:-1:-1;9199:160:26;;;;;;;;;;;:::i;14447:432::-;;;;;;;;;;;;;;;;-1:-1:-1;14447:432:26;;;;;;;:::i;2360:598::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2360:598:26;;-1:-1:-1;2360:598:26;;-1:-1:-1;;;;;2360:598:26:i;9699:261::-;9781:7;9798:11;9815:13;9881:18;9895:3;9881:13;:18::i;:::-;9926:16;;;:8;:16;;;;;;;;;;;:21;;;;;;;;;9866:33;;-1:-1:-1;9866:33:26;-1:-1:-1;9912:43:26;;9866:33;9912:13;:43::i;:::-;9905:50;9699:261;-1:-1:-1;;;;;9699:261:26:o;15216:226::-;15302:4;15318:42;;;15334:26;15318:42;15314:74;;;-1:-1:-1;15377:4:26;15370:11;;15314:74;15400:37;15424:12;15400:23;:37::i;:::-;15393:44;;15216:226;;;;:::o;3444:547::-;3630:10;:19;;;;;3629:60;;;3654:35;3671:5;3678:10;3654:16;:35::i;:::-;3621:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3768:17;;;3760:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3857:50;3880:5;3887:3;3892:4;3898:8;3857:22;:50::i;:::-;3913:73;3941:5;3948:3;3953:4;3959:8;3969:9;3980:5;3913:27;:73::i;:::-;3444:547;;;;;:::o;10318:1013::-;10470:14;;10510:11;;10425:16;;10470:14;10498:23;;10490:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10611:11;10624:13;10641:22;10655:4;10660:1;10655:7;;;;;;;;;;;;;;10641:13;:22::i;:::-;10610:53;;;;10669:19;10691:8;:20;10700:7;10708:1;10700:10;;;;;;;;;;;;;;10691:20;;;;;;;;;;;;;;;:25;10712:3;10691:25;;;;;;;;;;;;10669:47;;10722:16;10741:3;10722:22;;10773:30;10820:8;10806:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10806:23:26;;10773:56;;10854:33;10868:11;10881:5;10854:13;:33::i;:::-;10835:13;10849:1;10835:16;;;;;;;;;;;;;;;;;:52;10955:1;10938:362;10962:8;10958:1;:12;10938:362;;;11000:22;11014:4;11019:1;11014:7;;;;;;;11000:22;10985:37;;-1:-1:-1;10985:37:26;-1:-1:-1;11104:15:26;;;;;:45;;;11139:7;11147:1;11139:10;;;;;;;;;;;;;;11123:26;;:7;11133:1;11131;:3;11123:12;;;;;;;;;;;;;;:26;;;;11104:45;11100:133;;;11175:8;:20;11184:7;11192:1;11184:10;;;;;;;;;;;;;;11175:20;;;;;;;;;;;;;;;:25;11196:3;11175:25;;;;;;;;;;;;11161:39;;11221:3;11210:14;;11100:133;11260:33;11274:11;11287:5;11260:13;:33::i;:::-;11241:13;11255:1;11241:16;;;;;;;;;;;;;;;;;:52;10972:3;;10938:362;;;-1:-1:-1;11313:13:26;10318:1013;-1:-1:-1;;;;;;;;10318:1013:26:o;8707:230::-;8839:10;8829:21;;;;:9;:21;;;;;;;;;:32;;;;;;;;;;;;:44;;;;;;;;;;;;;8884:48;;;;;;;8829:32;;8839:10;8884:48;;;;;;;;;;;8707:230;;:::o;14001:189::-;1505:19;14104:21;;;14139;;;;;14001:189::o;9199:160::-;9326:17;;;;9294:15;9326:17;;;:9;:17;;;;;;;;:28;;;;;;;;;;;;;;;9199:160::o;14447:432::-;1395:2;14806:22;;14842:24;;;14725:33;14841;14447:432;;;;:::o;2360:598::-;2521:10;:19;;;;;2520:60;;;2545:35;2562:5;2569:10;2545:16;:35::i;:::-;2512:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:17;;;2646:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2838:43;2856:5;2863:3;2868;2873:7;2838:17;:43::i;:::-;2887:66;2910:5;2917:3;2922;2927:7;2936:9;2947:5;2887:22;:66::i;259:148:28:-;355:47;;;371:31;355:47;259:148;;;:::o;5742:1939:26:-;5893:11;;5964:15;;5951:28;;5943:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6070:3;6061:12;;:5;:12;;;;:29;;;;;6089:1;6077:9;:13;6061:29;6057:1537;;;6169:11;6182:13;6199:22;6213:4;6218:1;6213:7;;;;;;;6199:22;6345:15;;;6307;6345;;;;;;;;;;;:20;;;;;;;;;6374:11;;6168:53;;-1:-1:-1;6168:53:26;;-1:-1:-1;6307:15:26;6325:77;;6345:20;6168:53;;6374:8;;6307:15;;6374:11;;;;;;;;;;6387:14;6325:19;:77::i;:::-;6446:13;;;6410;6446;;;;;;;;;;;:18;;;;;;;;;6473:11;;6307:95;;-1:-1:-1;6410:13:26;;6426:75;;6446:18;6466:5;;6473:8;;6410:13;;6473:11;;;;;;;;;;6486:14;6426:19;:75::i;:::-;6410:91;-1:-1:-1;6554:3:26;6583:1;6566:649;6590:9;6586:1;:13;6566:649;;;6631:22;6645:4;6650:1;6645:7;;;;;;;6631:22;6616:37;;-1:-1:-1;6616:37:26;-1:-1:-1;6690:14:26;;;6686:323;;6770:15;;;;:8;:15;;;;;;;;;;;:24;;;;;;;;;:34;;;;6816:13;;;;;;;;;;;:22;;;;;;;;;:30;;;;6869:20;;;;;;;;;;6909:18;;;;;;;;;;6869:20;;6686:323;7062:64;7082:7;7091:5;7098:8;7107:1;7098:11;;;;;;;7062:64;7052:74;;7144:62;7164:5;7171;7178:8;7187:1;7178:11;;;;;;;7144:62;7136:70;-1:-1:-1;6601:3:26;;6566:649;;;-1:-1:-1;;7271:15:26;;;;:8;:15;;;;;;;;;;;:20;;;;;;;;:30;;;;7309:13;;;;;;;;;;;:18;;;;;;;;:26;;;;-1:-1:-1;6057:1537:26;;;7427:9;7422:166;7446:9;7442:1;:13;7422:166;;;7509:8;7518:1;7509:11;;;;;;;;;;;;;;7480:25;7490:5;7497:4;7502:1;7497:7;;;;;;;;;;;;;;7480:9;:25::i;:::-;:40;;7472:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7457:3;;7422:166;;;;6057:1537;7656:3;7623:53;;7649:5;7623:53;;7637:10;7623:53;;;7661:4;7667:8;7623:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5742:1939;;;;;:::o;7794:516::-;8015:16;:3;:14;;;:16::i;:::-;8011:295;;;8041:13;8079:3;8057:49;;;8112:9;8123:10;8135:5;8142:4;8148:8;8158:5;8057:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8057:107:26;;-1:-1:-1;8180:38:26;;;8190:28;8180:38;8172:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8011:295;;7794:516;;;;;;:::o;4381:385::-;4509:53;4526:5;4533:3;4538:7;4547:14;4509:16;:53::i;:::-;4599;4616:3;4623;4628:7;4637:14;4599:16;:53::i;:::-;4743:3;4709:52;;4736:5;4709:52;;4724:10;4709:52;;;4748:3;4753:7;4709:52;;;;;;;;;;;;;;;;;;;;;;;;4381:385;;;;:::o;4874:468::-;5066:16;:3;:14;;;:16::i;:::-;5062:276;;;5092:13;5130:3;5108:44;;;5157:9;5168:10;5180:5;5187:3;5192:7;5201:5;5108:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5108:99:26;;-1:-1:-1;5223:32:26;;;5233:22;5223:32;5215:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12664:1162;12796:20;1395:2;12842:22;;12885:33;12796:20;12929:10;:28;;;;;;;;;12925:871;;;12996:16;;;12982:31;;;-1:-1:-1;13029:26:26;;;;13021:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13178:16;13137:19;;;13136:28;;13135:40;;:59;13118:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12925:871;;;13331:14;13317:10;:28;;;;;;;;;13313:483;;;13384:16;;;13370:31;;;-1:-1:-1;13417:26:26;;;;13409:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13558:7;13549:4;13540:5;13526:10;:19;;13525:28;13524:41;;13507:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13313:483;13693:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13313:483;13802:19;;12664:1162;;;;;;:::o;541:398:27:-;602:4;854:21;;890:15;;;;;:43;;-1:-1:-1;206:66:27;909:24;;;890:43;882:52;541:398;-1:-1:-1;;;541:398:27:o;11845:352:26:-;11963:11;11980:13;12047:18;12061:3;12047:13;:18::i;:::-;12140;;;:8;:18;;;;;;;;;;;:23;;;;;;;;;12032:33;;-1:-1:-1;12032:33:26;-1:-1:-1;12120:72:26;;12032:33;12172:7;12181:10;12120:19;:72::i;:::-;12094:18;;;;:8;:18;;;;;;;;;;;:23;;;;;;;;;;:98;;;;-1:-1:-1;;;;11845:352:26:o"
            },
            "methodIdentifiers": {
              "balanceOf(address,uint256)": "00fdd58e",
              "balanceOfBatch(address[],uint256[])": "4e1273f4",
              "getIDBinIndex(uint256)": "db90e83c",
              "getValueInBin(uint256,uint256)": "eaec5f81",
              "isApprovedForAll(address,address)": "e985e9c5",
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
              "setApprovalForAll(address,bool)": "a22cb465",
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "multi-token-standard/contracts/utils/Address.sol": {
        "Address": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f3df6e76761163a952d4950f30ea503aa8a715360d462935d8fae96fcca2c2d64736f6c63430007040033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4F RETURNDATASIZE 0xF6 0xE7 PUSH8 0x61163A952D4950F3 0xE 0xA5 SUB 0xAA DUP11 PUSH18 0x5360D462935D8FAE96FCCA2C2D64736F6C63 NUMBER STOP SMOD DIV STOP CALLER ",
              "sourceMap": "85:856:27:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204f3df6e76761163a952d4950f30ea503aa8a715360d462935d8fae96fcca2c2d64736f6c63430007040033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x4F RETURNDATASIZE 0xF6 0xE7 PUSH8 0x61163A952D4950F3 0xE 0xA5 SUB 0xAA DUP11 PUSH18 0x5360D462935D8FAE96FCCA2C2D64736F6C63 NUMBER STOP SMOD DIV STOP CALLER ",
              "sourceMap": "85:856:27:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "multi-token-standard/contracts/utils/ERC165.sol": {
        "ERC165": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes4",
                  "name": "_interfaceID",
                  "type": "bytes4"
                }
              ],
              "name": "supportsInterface",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "supportsInterface(bytes4)": "01ffc9a7"
            }
          }
        }
      },
      "multi-token-standard/contracts/utils/LibBytes.sol": {
        "LibBytes": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122044943532c08d4be78283489b88e561b524ef0e4a0d07f9764c7f7ec610386fbb64736f6c63430007040033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIFFICULTY SWAP5 CALLDATALOAD ORIGIN 0xC0 DUP14 0x4B 0xE7 DUP3 DUP4 0x48 SWAP12 DUP9 0xE5 PUSH2 0xB524 0xEF 0xE 0x4A 0xD SMOD 0xF9 PUSH23 0x4C7F7EC610386FBB64736F6C6343000704003300000000 ",
              "sourceMap": "678:1552:29:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122044943532c08d4be78283489b88e561b524ef0e4a0d07f9764c7f7ec610386fbb64736f6c63430007040033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIFFICULTY SWAP5 CALLDATALOAD ORIGIN 0xC0 DUP14 0x4B 0xE7 DUP3 DUP4 0x48 SWAP12 DUP9 0xE5 PUSH2 0xB524 0xEF 0xE 0x4A 0xD SMOD 0xF9 PUSH23 0x4C7F7EC610386FBB64736F6C6343000704003300000000 ",
              "sourceMap": "678:1552:29:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "multi-token-standard/contracts/utils/LibEIP712.sol": {
        "LibEIP712": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220080f8e98cebcc2cc94fbbb39ff0b1ab44b7ef398360246f064f93849ab07339564736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD 0xF DUP15 SWAP9 0xCE 0xBC 0xC2 0xCC SWAP5 0xFB 0xBB CODECOPY SELFDESTRUCT SIGNEXTEND BYTE 0xB4 0x4B PUSH31 0xF398360246F064F93849AB07339564736F6C63430007040033000000000000 ",
              "sourceMap": "611:1078:30:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220080f8e98cebcc2cc94fbbb39ff0b1ab44b7ef398360246f064f93849ab07339564736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD 0xF DUP15 SWAP9 0xCE 0xBC 0xC2 0xCC SWAP5 0xFB 0xBB CODECOPY SELFDESTRUCT SIGNEXTEND BYTE 0xB4 0x4B PUSH31 0xF398360246F064F93849AB07339564736F6C63430007040033000000000000 ",
              "sourceMap": "611:1078:30:-:0;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "multi-token-standard/contracts/utils/SafeMath.sol": {
        "SafeMath": {
          "abi": [],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200aa097d711c3b8f5bb6853bfe0420760d2fc0def9dda33892cb96863e5d0a49564736f6c63430007040033",
              "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP LOG0 SWAP8 0xD7 GT 0xC3 0xB8 CREATE2 0xBB PUSH9 0x53BFE0420760D2FC0D 0xEF SWAP14 0xDA CALLER DUP10 0x2C 0xB9 PUSH9 0x63E5D0A49564736F6C PUSH4 0x43000704 STOP CALLER ",
              "sourceMap": "125:1744:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212200aa097d711c3b8f5bb6853bfe0420760d2fc0def9dda33892cb96863e5d0a49564736f6c63430007040033",
              "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 EXP LOG0 SWAP8 0xD7 GT 0xC3 0xB8 CREATE2 0xBB PUSH9 0x53BFE0420760D2FC0D 0xEF SWAP14 0xDA CALLER DUP10 0x2C 0xB9 PUSH9 0x63E5D0A49564736F6C PUSH4 0x43000704 STOP CALLER ",
              "sourceMap": "125:1744:31:-:0;;;;;;;;"
            },
            "methodIdentifiers": {}
          }
        }
      },
      "multi-token-standard/contracts/utils/SignatureValidator.sol": {
        "SignatureValidator": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "_signerAddress",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "_hash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "_data",
                  "type": "bytes"
                },
                {
                  "internalType": "bytes",
                  "name": "_sig",
                  "type": "bytes"
                }
              ],
              "name": "isValidSignature",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isValid",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50610c5f806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063fa4e12d714610030575b600080fd5b61017f6004803603608081101561004657600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561008357600080fd5b82018360208201111561009557600080fd5b803590602001918460018302840111640100000000831117156100b757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561010a57600080fd5b82018360208201111561011c57600080fd5b8035906020019184600183028401116401000000008311171561013e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610193945050505050565b604080519115158252519081900360200190f35b6000808251116101ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526043815260200180610bab6043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851661025a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180610b786033913960400191505060405180910390fd5b600061026583610974565b60f81c9050600581106102c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180610ad1603a913960400191505060405180910390fd5b60008160ff1660058111156102d457fe5b90506000808080808560058111156102e857fe5b141561033f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180610b0b6036913960400191505060405180910390fd5b600185600581111561034d57fe5b14156104905787516061146103ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180610b416037913960400191505060405180910390fd5b6103b8886000610a31565b92506103c5886020610a31565b9150876040815181106103d457fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561043e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d8116911614975061096c9650505050505050565b600285600581111561049e57fe5b14156105ee5787516061146104fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180610b416037913960400191505060405180910390fd5b610509886000610a31565b9250610516886020610a31565b91508760408151811061052557fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa15801561043e573d6000803e3d6000fd5b60038560058111156105fc57fe5b14156107b457604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b8381101561068a578181015183820152602001610672565b50505050905090810190601f1680156106b75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156106ea5781810151838201526020016106d2565b50505050905090810190601f1680156107175780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561073657600080fd5b505afa15801561074a573d6000803e3d6000fd5b505050506040513d602081101561076057600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b0000000000000000000000000000000000000000000000000000000014965061096c95505050505050565b60048560058111156107c257fe5b141561091b57604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b8381101561085257818101518382015260200161083a565b50505050905090810190601f16801561087f5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561089d57600080fd5b505afa1580156108b1573d6000803e3d6000fd5b505050506040513d60208110156108c757600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014965061096c95505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180610ad1603a913960400191505060405180910390fd5b949350505050565b6000808251116109cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180610a9a6037913960400191505060405180910390fd5b816001835103815181106109df57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b60008160200183511015610a90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180610bee603c913960400191505060405180910390fd5b5001602001519056fe4c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245445369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f52455155495245445369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e45525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f52455155495245444c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a264697066735822122041ffcac34a5e94991348f61b5e80402447b0666d207cf01a71406ec363965e0b64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC5F DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xFA4E12D7 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x193 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x1EE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBAB PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x25A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB78 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x265 DUP4 PUSH2 0x974 JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x5 DUP2 LT PUSH2 0x2C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAD1 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2D4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2E8 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x33F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB0B PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x34D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x490 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x3AD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB41 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B8 DUP9 PUSH1 0x0 PUSH2 0xA31 JUMP JUMPDEST SWAP3 POP PUSH2 0x3C5 DUP9 PUSH1 0x20 PUSH2 0xA31 JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x3D4 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP4 POP PUSH1 0x1 DUP11 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 DUP2 AND SWAP2 AND EQ SWAP8 POP PUSH2 0x96C SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x49E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x5EE JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x4FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB41 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x509 DUP9 PUSH1 0x0 PUSH2 0xA31 JUMP JUMPDEST SWAP3 POP PUSH2 0x516 DUP9 PUSH1 0x20 PUSH2 0xA31 JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x525 JUMPI INVALID JUMPDEST ADD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 DUP6 ADD MSTORE PUSH1 0x3C DUP1 DUP3 ADD DUP16 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x5C DUP3 ADD DUP1 DUP5 MSTORE DUP2 MLOAD SWAP2 DUP7 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP1 SWAP2 MSTORE PUSH1 0x7C DUP3 ADD DUP1 DUP5 MSTORE MSTORE PUSH1 0xF8 SWAP3 SWAP1 SWAP3 SHR PUSH1 0x9C DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xBC DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0xDC DUP4 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP1 SWAP7 POP PUSH1 0x1 SWAP3 PUSH1 0xFC DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x5FC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 DUP3 MSTORE DUP11 MLOAD PUSH1 0x44 DUP3 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP3 PUSH4 0x20C13B0B SWAP3 DUP14 SWAP3 DUP14 SWAP3 SWAP2 DUP3 SWAP2 PUSH1 0x24 DUP3 ADD SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x68A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x672 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x6B7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6EA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6D2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x717 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x736 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x74A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x760 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x96C SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x7C2 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x91B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP13 DUP2 MSTORE PUSH1 0x24 DUP3 ADD SWAP3 DUP4 MSTORE DUP11 MLOAD PUSH1 0x44 DUP4 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP4 PUSH4 0x1626BA7E SWAP4 DUP16 SWAP4 DUP15 SWAP4 SWAP1 SWAP3 SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x852 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x83A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x87F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x96C SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAD1 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x9CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA9A PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x9DF JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO PUSH2 0xA90 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBEE PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP INVALID 0x4C PUSH10 0x62427974657323706F70 0x4C PUSH2 0x7374 TIMESTAMP PUSH26 0x74653A20475245415445525F5448414E5F5A45524F5F4C454E47 SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 SSTORE 0x4E MSTORE8 SSTORE POP POP 0x4F MSTORE SLOAD GASLIMIT DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4C 0x4C GASLIMIT SELFBALANCE COINBASE 0x4C 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F CODECOPY CALLDATACOPY 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E GASLIMIT MSTORE MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F SLOAD 0x48 COINBASE 0x4E 0x5F ADDRESS 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY 0x4C PUSH10 0x62427974657323726561 PUSH5 0x4279746573 CALLER ORIGIN GASPRICE KECCAK256 SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F 0x4F MSTORE 0x5F GASLIMIT MLOAD SSTORE COINBASE 0x4C 0x5F SLOAD 0x4F 0x5F CALLER ORIGIN 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE SELFDESTRUCT 0xCA 0xC3 0x4A 0x5E SWAP5 SWAP10 SGT 0x48 0xF6 SHL 0x5E DUP1 BLOCKHASH 0x24 SELFBALANCE 0xB0 PUSH7 0x6D207CF01A7140 PUSH15 0xC363965E0B64736F6C634300070400 CALLER ",
              "sourceMap": "416:4812:32:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061002b5760003560e01c8063fa4e12d714610030575b600080fd5b61017f6004803603608081101561004657600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561008357600080fd5b82018360208201111561009557600080fd5b803590602001918460018302840111640100000000831117156100b757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561010a57600080fd5b82018360208201111561011c57600080fd5b8035906020019184600183028401116401000000008311171561013e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610193945050505050565b604080519115158252519081900360200190f35b6000808251116101ee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526043815260200180610bab6043913960600191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff851661025a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180610b786033913960400191505060405180910390fd5b600061026583610974565b60f81c9050600581106102c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180610ad1603a913960400191505060405180910390fd5b60008160ff1660058111156102d457fe5b90506000808080808560058111156102e857fe5b141561033f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526036815260200180610b0b6036913960400191505060405180910390fd5b600185600581111561034d57fe5b14156104905787516061146103ad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180610b416037913960400191505060405180910390fd5b6103b8886000610a31565b92506103c5886020610a31565b9150876040815181106103d457fe5b602001015160f81c60f81b60f81c935060018a85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561043e573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015173ffffffffffffffffffffffffffffffffffffffff8d8116911614975061096c9650505050505050565b600285600581111561049e57fe5b14156105ee5787516061146104fe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180610b416037913960400191505060405180910390fd5b610509886000610a31565b9250610516886020610a31565b91508760408151811061052557fe5b01602090810151604080517f19457468657265756d205369676e6564204d6573736167653a0a33320000000081850152603c8082018f905282518083039091018152605c82018084528151918601919091206000909152607c82018084525260f89290921c609c830181905260bc830187905260dc8301869052905190965060019260fc8084019391927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa15801561043e573d6000803e3d6000fd5b60038560058111156105fc57fe5b14156107b457604080517f20c13b0b000000000000000000000000000000000000000000000000000000008152600481019182528a5160448201528a5173ffffffffffffffffffffffffffffffffffffffff8e16926320c13b0b928d928d92918291602482019160640190602087019080838360005b8381101561068a578181015183820152602001610672565b50505050905090810190601f1680156106b75780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156106ea5781810151838201526020016106d2565b50505050905090810190601f1680156107175780820380516001836020036101000a031916815260200191505b5094505050505060206040518083038186803b15801561073657600080fd5b505afa15801561074a573d6000803e3d6000fd5b505050506040513d602081101561076057600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f20c13b0b0000000000000000000000000000000000000000000000000000000014965061096c95505050505050565b60048560058111156107c257fe5b141561091b57604080517f1626ba7e000000000000000000000000000000000000000000000000000000008152600481018c8152602482019283528a5160448301528a5173ffffffffffffffffffffffffffffffffffffffff8f1693631626ba7e938f938e9390929160640190602085019080838360005b8381101561085257818101518382015260200161083a565b50505050905090810190601f16801561087f5780820380516001836020036101000a031916815260200191505b50935050505060206040518083038186803b15801561089d57600080fd5b505afa1580156108b1573d6000803e3d6000fd5b505050506040513d60208110156108c757600080fd5b50517fffffffff00000000000000000000000000000000000000000000000000000000167f1626ba7e0000000000000000000000000000000000000000000000000000000014965061096c95505050505050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180610ad1603a913960400191505060405180910390fd5b949350505050565b6000808251116109cf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526037815260200180610a9a6037913960400191505060405180910390fd5b816001835103815181106109df57fe5b016020015182517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909252507fff000000000000000000000000000000000000000000000000000000000000001690565b60008160200183511015610a90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603c815260200180610bee603c913960400191505060405180910390fd5b5001602001519056fe4c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f52455155495245445369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e41545552455369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f52455155495245445369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e45525369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f52455155495245444c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544a264697066735822122041ffcac34a5e94991348f61b5e80402447b0666d207cf01a71406ec363965e0b64736f6c63430007040033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x2B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xFA4E12D7 EQ PUSH2 0x30 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x17F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x46 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0xB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x11C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x13E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x193 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x1EE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x43 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBAB PUSH1 0x43 SWAP2 CODECOPY PUSH1 0x60 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH2 0x25A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x33 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB78 PUSH1 0x33 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x265 DUP4 PUSH2 0x974 JUMP JUMPDEST PUSH1 0xF8 SHR SWAP1 POP PUSH1 0x5 DUP2 LT PUSH2 0x2C3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAD1 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0xFF AND PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2D4 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2E8 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x33F JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x36 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB0B PUSH1 0x36 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x34D JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x490 JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x3AD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB41 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3B8 DUP9 PUSH1 0x0 PUSH2 0xA31 JUMP JUMPDEST SWAP3 POP PUSH2 0x3C5 DUP9 PUSH1 0x20 PUSH2 0xA31 JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x3D4 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD MLOAD PUSH1 0xF8 SHR PUSH1 0xF8 SHL PUSH1 0xF8 SHR SWAP4 POP PUSH1 0x1 DUP11 DUP6 DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP14 DUP2 AND SWAP2 AND EQ SWAP8 POP PUSH2 0x96C SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x49E JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x5EE JUMPI DUP8 MLOAD PUSH1 0x61 EQ PUSH2 0x4FE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xB41 PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x509 DUP9 PUSH1 0x0 PUSH2 0xA31 JUMP JUMPDEST SWAP3 POP PUSH2 0x516 DUP9 PUSH1 0x20 PUSH2 0xA31 JUMP JUMPDEST SWAP2 POP DUP8 PUSH1 0x40 DUP2 MLOAD DUP2 LT PUSH2 0x525 JUMPI INVALID JUMPDEST ADD PUSH1 0x20 SWAP1 DUP2 ADD MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 DUP6 ADD MSTORE PUSH1 0x3C DUP1 DUP3 ADD DUP16 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x5C DUP3 ADD DUP1 DUP5 MSTORE DUP2 MLOAD SWAP2 DUP7 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SWAP1 SWAP2 MSTORE PUSH1 0x7C DUP3 ADD DUP1 DUP5 MSTORE MSTORE PUSH1 0xF8 SWAP3 SWAP1 SWAP3 SHR PUSH1 0x9C DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xBC DUP4 ADD DUP8 SWAP1 MSTORE PUSH1 0xDC DUP4 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP1 SWAP7 POP PUSH1 0x1 SWAP3 PUSH1 0xFC DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x43E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x3 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x5FC JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x7B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD SWAP2 DUP3 MSTORE DUP11 MLOAD PUSH1 0x44 DUP3 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP15 AND SWAP3 PUSH4 0x20C13B0B SWAP3 DUP14 SWAP3 DUP14 SWAP3 SWAP2 DUP3 SWAP2 PUSH1 0x24 DUP3 ADD SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP8 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x68A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x672 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x6B7 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6EA JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6D2 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x717 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x736 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x74A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x760 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x20C13B0B00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x96C SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP6 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x7C2 JUMPI INVALID JUMPDEST EQ ISZERO PUSH2 0x91B JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP13 DUP2 MSTORE PUSH1 0x24 DUP3 ADD SWAP3 DUP4 MSTORE DUP11 MLOAD PUSH1 0x44 DUP4 ADD MSTORE DUP11 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP4 PUSH4 0x1626BA7E SWAP4 DUP16 SWAP4 DUP15 SWAP4 SWAP1 SWAP3 SWAP2 PUSH1 0x64 ADD SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x852 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x83A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x87F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP4 POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x89D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x8B1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 AND PUSH32 0x1626BA7E00000000000000000000000000000000000000000000000000000000 EQ SWAP7 POP PUSH2 0x96C SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xAD1 PUSH1 0x3A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 MLOAD GT PUSH2 0x9CF JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x37 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA9A PUSH1 0x37 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x9DF JUMPI INVALID JUMPDEST ADD PUSH1 0x20 ADD MLOAD DUP3 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP3 MSTORE POP PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x20 ADD DUP4 MLOAD LT ISZERO PUSH2 0xA90 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x3C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xBEE PUSH1 0x3C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP ADD PUSH1 0x20 ADD MLOAD SWAP1 JUMP INVALID 0x4C PUSH10 0x62427974657323706F70 0x4C PUSH2 0x7374 TIMESTAMP PUSH26 0x74653A20475245415445525F5448414E5F5A45524F5F4C454E47 SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 SSTORE 0x4E MSTORE8 SSTORE POP POP 0x4F MSTORE SLOAD GASLIMIT DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4C 0x4C GASLIMIT SELFBALANCE COINBASE 0x4C 0x5F MSTORE8 0x49 SELFBALANCE 0x4E COINBASE SLOAD SSTORE MSTORE GASLIMIT MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F CODECOPY CALLDATACOPY 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x49 0x4E JUMP COINBASE 0x4C 0x49 DIFFICULTY 0x5F MSTORE8 0x49 SELFBALANCE 0x4E GASLIMIT MSTORE MSTORE8 PUSH10 0x676E617475726556616C PUSH10 0x6461746F722369735661 PUSH13 0x69645369676E61747572653A20 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F SLOAD 0x48 COINBASE 0x4E 0x5F ADDRESS 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY 0x4C PUSH10 0x62427974657323726561 PUSH5 0x4279746573 CALLER ORIGIN GASPRICE KECCAK256 SELFBALANCE MSTORE GASLIMIT COINBASE SLOAD GASLIMIT MSTORE 0x5F 0x4F MSTORE 0x5F GASLIMIT MLOAD SSTORE COINBASE 0x4C 0x5F SLOAD 0x4F 0x5F CALLER ORIGIN 0x5F 0x4C GASLIMIT 0x4E SELFBALANCE SLOAD 0x48 0x5F MSTORE GASLIMIT MLOAD SSTORE 0x49 MSTORE GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE SELFDESTRUCT 0xCA 0xC3 0x4A 0x5E SWAP5 SWAP10 SGT 0x48 0xF6 SHL 0x5E DUP1 BLOCKHASH 0x24 SELFBALANCE 0xB0 PUSH7 0x6D207CF01A7140 PUSH15 0xC363965E0B64736F6C634300070400 CALLER ",
              "sourceMap": "416:4812:32:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:3179;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2047:3179:32;;;;;;;;-1:-1:-1;2047:3179:32;;-1:-1:-1;;2047:3179:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2047:3179:32;;-1:-1:-1;2047:3179:32;;-1:-1:-1;;;;;2047:3179:32:i;:::-;;;;;;;;;;;;;;;;;;;2204:12;2255:1;2241:4;:11;:15;2226:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2361:30;;;2346:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2515:22;2546:18;:4;:16;:18::i;:::-;2540:25;;;-1:-1:-1;2649:29:32;2624:55;;2609:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2790:27;2834:16;2820:31;;;;;;;;;;2790:61;-1:-1:-1;2903:7:32;;;;;3272:13;:38;;;;;;;;;3268:1597;;;3320:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3268:1597;3450:20;3433:13;:37;;;;;;;;;3429:1436;;;3497:4;:11;3512:2;3497:17;3480:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3601:19;:4;3618:1;3601:16;:19::i;:::-;3597:23;-1:-1:-1;3632:20:32;:4;3649:2;3632:16;:20::i;:::-;3628:24;;3670:4;3675:2;3670:8;;;;;;;;;;;;;;;;3664:15;;3660:19;;3699:25;3709:5;3716:1;3719;3722;3699:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3699:25:32;;;;;3742:27;;;;;;;;-1:-1:-1;3777:14:32;;-1:-1:-1;;;;;;;3777:14:32;3429:1436;3894:21;3877:13;:38;;;;;;;;;3873:992;;;3942:4;:11;3957:2;3942:17;3925:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4046:19;:4;4063:1;4046:16;:19::i;:::-;4042:23;-1:-1:-1;4077:20:32;:4;4094:2;4077:16;:20::i;:::-;4073:24;;4115:4;4120:2;4115:8;;;;;;;;;;;;;;4173:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4163:70;;;;;;;;;-1:-1:-1;4144:130:32;;;;;;;;;;4115:8;;;;;4144:130;;;;;;;;;;;;;;;;;;;;4115:8;;-1:-1:-1;4144:130:32;;;;;;;4115:8;;-1:-1:-1;4144:130:32;;;;;;;;;;;;;;;;;;;;;;;;;3873:992;4444:25;4427:13;:42;;;;;;;;;4423:442;;;4511:60;;;;;;;;;;;;;;;;;;;;:47;;;;;;4559:5;;4566:4;;4511:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4511:60:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4511:60:32;4489:82;;:18;:82;;-1:-1:-1;4579:14:32;;-1:-1:-1;;;;;;4579:14:32;4423:442;4699:27;4682:13;:44;;;;;;;;;4678:187;;;4776:60;;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;;;4824:5;;4831:4;;4776:60;;;;;;;;;;;;;-1:-1:-1;4776:60:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4776:60:32;4746:90;;:26;:90;;-1:-1:-1;4844:14:32;;-1:-1:-1;;;;;;4844:14:32;4678:187;5153:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:3179;;;;;;;:::o;1033:396:29:-;1105:13;1154:1;1143;:8;:12;1128:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1266:1;1279;1268;:8;:12;1266:15;;;;;;;;;;;;1364:8;;1360:16;;1383:17;;;-1:-1:-1;1266:15:29;;;1033:396::o;1792:436::-;1891:14;1942:5;1950:2;1942:10;1930:1;:8;:22;;1915:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2185:13:29;2101:2;2185:13;2179:20;;1792:436::o"
            },
            "methodIdentifiers": {
              "isValidSignature(address,bytes32,bytes,bytes)": "fa4e12d7"
            }
          }
        }
      }
    },
    "errors": [
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "erc20-meta-token/contracts/interfaces/IERC20Wrapper.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "erc20-meta-token/contracts/interfaces/IERC20Wrapper.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "erc20-meta-token/contracts/mocks/ERC20Mock.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "erc20-meta-token/contracts/mocks/ERC20Mock.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "multi-token-standard/contracts/utils/Address.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "multi-token-standard/contracts/utils/Address.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "multi-token-standard/contracts/utils/ERC165.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "multi-token-standard/contracts/utils/ERC165.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "multi-token-standard/contracts/utils/LibBytes.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "multi-token-standard/contracts/utils/LibBytes.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "multi-token-standard/contracts/utils/LibEIP712.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "multi-token-standard/contracts/utils/LibEIP712.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "multi-token-standard/contracts/utils/SafeMath.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "multi-token-standard/contracts/utils/SafeMath.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "1878",
        "formattedMessage": "multi-token-standard/contracts/utils/SignatureValidator.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n",
        "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: <SPDX-License>\" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.",
        "severity": "warning",
        "sourceLocation": {
          "end": -1,
          "file": "multi-token-standard/contracts/utils/SignatureValidator.sol",
          "start": -1
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "contracts/exchange/NiftyswapExchange.sol:57:3: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  constructor(address _tokenAddr, address _currencyAddr, uint256 _currencyID) public {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 3231,
          "file": "contracts/exchange/NiftyswapExchange.sol",
          "start": 2686
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "erc20-meta-token/contracts/mocks/ERC20Mock.sol:195:3: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  constructor() public { }\n  ^----------------------^\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 7538,
          "file": "erc20-meta-token/contracts/mocks/ERC20Mock.sol",
          "start": 7514
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol:39:3: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  constructor() public {\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 1797,
          "file": "erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol",
          "start": 1693
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2462",
        "formattedMessage": "contracts/utils/WrapAndNiftyswap.sol:32:3: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n  constructor(\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.",
        "severity": "warning",
        "sourceLocation": {
          "end": 2202,
          "file": "contracts/utils/WrapAndNiftyswap.sol",
          "start": 1410
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": "2018",
        "formattedMessage": "contracts/utils/WrapAndNiftyswap.sol:109:3: Warning: Function state mutability can be restricted to view\n  function onERC1155Received(address, address, uint256, uint256, bytes calldata)\n  ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Function state mutability can be restricted to view",
        "severity": "warning",
        "sourceLocation": {
          "end": 4442,
          "file": "contracts/utils/WrapAndNiftyswap.sol",
          "start": 4135
        },
        "type": "Warning"
      }
    ],
    "sources": {
      "contracts/exchange/NiftyswapExchange.sol": {
        "ast": {
          "absolutePath": "contracts/exchange/NiftyswapExchange.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155": [
              4812
            ],
            "ERC1155MintBurn": [
              5902
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "IERC165": [
              3965
            ],
            "INiftyswapExchange": [
              2238
            ],
            "NiftyswapExchange": [
              1946
            ],
            "ReentrancyGuard": [
              2332
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 1947,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:0"
            },
            {
              "id": 2,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "62:33:0"
            },
            {
              "absolutePath": "contracts/interfaces/INiftyswapExchange.sol",
              "file": "../interfaces/INiftyswapExchange.sol",
              "id": 3,
              "nodeType": "ImportDirective",
              "scope": 1947,
              "sourceUnit": 2239,
              "src": "96:46:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/utils/ReentrancyGuard.sol",
              "file": "../utils/ReentrancyGuard.sol",
              "id": 4,
              "nodeType": "ImportDirective",
              "scope": 1947,
              "sourceUnit": 2333,
              "src": "143:38:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC165.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC165.sol",
              "id": 5,
              "nodeType": "ImportDirective",
              "scope": 1947,
              "sourceUnit": 3966,
              "src": "182:63:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC1155.sol",
              "id": 6,
              "nodeType": "ImportDirective",
              "scope": 1947,
              "sourceUnit": 3876,
              "src": "246:64:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol",
              "id": 7,
              "nodeType": "ImportDirective",
              "scope": 1947,
              "sourceUnit": 3931,
              "src": "311:77:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155MintBurn.sol",
              "file": "multi-token-standard/contracts/tokens/ERC1155/ERC1155MintBurn.sol",
              "id": 8,
              "nodeType": "ImportDirective",
              "scope": 1947,
              "sourceUnit": 5903,
              "src": "389:75:0",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 10,
                    "name": "ReentrancyGuard",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2332,
                    "src": "1215:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ReentrancyGuard_$2332",
                      "typeString": "contract ReentrancyGuard"
                    }
                  },
                  "id": 11,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1215:15:0"
                },
                {
                  "baseName": {
                    "id": 12,
                    "name": "ERC1155MintBurn",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5902,
                    "src": "1232:15:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155MintBurn_$5902",
                      "typeString": "contract ERC1155MintBurn"
                    }
                  },
                  "id": 13,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1232:15:0"
                },
                {
                  "baseName": {
                    "id": 14,
                    "name": "INiftyswapExchange",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2238,
                    "src": "1249:18:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_INiftyswapExchange_$2238",
                      "typeString": "contract INiftyswapExchange"
                    }
                  },
                  "id": 15,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1249:18:0"
                }
              ],
              "contractDependencies": [
                2238,
                2332,
                3875,
                4812,
                5902,
                7229
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 9,
                "nodeType": "StructuredDocumentation",
                "src": "467:717:0",
                "text": " This Uniswap-like implementation supports ERC-1155 standard tokens\n with an ERC-1155 based token used as a currency instead of Ether.\n See https://github.com/0xsequence/erc20-meta-token for a generalized\n ERC-20 => ERC-1155 token wrapper\n Liquidity tokens are also ERC-1155 tokens you can find the ERC-1155\n implementation used here:\n    https://github.com/horizon-games/multi-token-standard/tree/master/contracts/tokens/ERC1155\n @dev Like Uniswap, tokens with 0 decimals and low supply are susceptible to significant rounding\n      errors when it comes to removing liquidity, possibly preventing them to be withdrawn without\n      some collaboration between liquidity providers."
              },
              "fullyImplemented": true,
              "id": 1946,
              "linearizedBaseContracts": [
                1946,
                2238,
                5902,
                4812,
                7229,
                3875,
                2332
              ],
              "name": "NiftyswapExchange",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 18,
                  "libraryName": {
                    "id": 16,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7467,
                    "src": "1278:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$7467",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "1272:27:0",
                  "typeName": {
                    "id": 17,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1291:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 20,
                  "mutability": "mutable",
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "1439:23:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$3875",
                    "typeString": "contract IERC1155"
                  },
                  "typeName": {
                    "id": 19,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3875,
                    "src": "1439:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$3875",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22,
                  "mutability": "mutable",
                  "name": "currency",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "1531:26:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC1155_$3875",
                    "typeString": "contract IERC1155"
                  },
                  "typeName": {
                    "id": 21,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3875,
                    "src": "1531:8:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$3875",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 24,
                  "mutability": "mutable",
                  "name": "currencyPoolBanned",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "1635:32:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1635:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 26,
                  "mutability": "mutable",
                  "name": "factory",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "1741:24:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 25,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1741:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 28,
                  "mutability": "mutable",
                  "name": "currencyID",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "1845:27:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 27,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1845:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 31,
                  "mutability": "constant",
                  "name": "FEE_MULTIPLIER",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "1949:46:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 29,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1949:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "393935",
                    "id": 30,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1992:3:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_995_by_1",
                      "typeString": "int_const 995"
                    },
                    "value": "995"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 35,
                  "mutability": "mutable",
                  "name": "totalSupplies",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "2068:50:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 34,
                    "keyType": {
                      "id": 32,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2076:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2068:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 33,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2087:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 39,
                  "mutability": "mutable",
                  "name": "currencyReserves",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "2169:53:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "typeName": {
                    "id": 38,
                    "keyType": {
                      "id": 36,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2177:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "2169:27:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                      "typeString": "mapping(uint256 => uint256)"
                    },
                    "valueType": {
                      "id": 37,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2188:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 99,
                    "nodeType": "Block",
                    "src": "2769:462:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 65,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 58,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 52,
                                      "name": "_tokenAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 42,
                                      "src": "2798:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 51,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2790:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 50,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2790:7:0",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 53,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2790:19:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 56,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2821:1:0",
                                      "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": 55,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2813:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 54,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2813:7:0",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 57,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2813:10:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "2790:33:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 64,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 59,
                                  "name": "_currencyAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 44,
                                  "src": "2827:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "30",
                                      "id": 62,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2852:1:0",
                                      "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": 61,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2844:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 60,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2844:7:0",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 63,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2844:10:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "2827:27:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2790:64:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e696674797377617045786368616e676523636f6e7374727563746f723a494e56414c49445f494e505554",
                              "id": 66,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2862:45:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0667dec8c77b85a6e26ef8f86a9040a6b4378973b40258d8b8f236db1709d355",
                                "typeString": "literal_string \"NiftyswapExchange#constructor:INVALID_INPUT\""
                              },
                              "value": "NiftyswapExchange#constructor:INVALID_INPUT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0667dec8c77b85a6e26ef8f86a9040a6b4378973b40258d8b8f236db1709d355",
                                "typeString": "literal_string \"NiftyswapExchange#constructor:INVALID_INPUT\""
                              }
                            ],
                            "id": 49,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2775:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 67,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2775:138:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 68,
                        "nodeType": "ExpressionStatement",
                        "src": "2775:138:0"
                      },
                      {
                        "expression": {
                          "id": 72,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 69,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26,
                            "src": "2919:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 70,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2929:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 71,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "2929:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "2919:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 73,
                        "nodeType": "ExpressionStatement",
                        "src": "2919:20:0"
                      },
                      {
                        "expression": {
                          "id": 78,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 74,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 20,
                            "src": "2945:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC1155_$3875",
                              "typeString": "contract IERC1155"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 76,
                                "name": "_tokenAddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42,
                                "src": "2962:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 75,
                              "name": "IERC1155",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3875,
                              "src": "2953:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                "typeString": "type(contract IERC1155)"
                              }
                            },
                            "id": 77,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2953:20:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC1155_$3875",
                              "typeString": "contract IERC1155"
                            }
                          },
                          "src": "2945:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC1155_$3875",
                            "typeString": "contract IERC1155"
                          }
                        },
                        "id": 79,
                        "nodeType": "ExpressionStatement",
                        "src": "2945:28:0"
                      },
                      {
                        "expression": {
                          "id": 84,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 80,
                            "name": "currency",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "2979:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC1155_$3875",
                              "typeString": "contract IERC1155"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 82,
                                "name": "_currencyAddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44,
                                "src": "2999:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 81,
                              "name": "IERC1155",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3875,
                              "src": "2990:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                "typeString": "type(contract IERC1155)"
                              }
                            },
                            "id": 83,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2990:23:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC1155_$3875",
                              "typeString": "contract IERC1155"
                            }
                          },
                          "src": "2979:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC1155_$3875",
                            "typeString": "contract IERC1155"
                          }
                        },
                        "id": 85,
                        "nodeType": "ExpressionStatement",
                        "src": "2979:34:0"
                      },
                      {
                        "expression": {
                          "id": 88,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 86,
                            "name": "currencyID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "3019:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 87,
                            "name": "_currencyID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 46,
                            "src": "3032:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3019:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 89,
                        "nodeType": "ExpressionStatement",
                        "src": "3019:24:0"
                      },
                      {
                        "expression": {
                          "id": 97,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 90,
                            "name": "currencyPoolBanned",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24,
                            "src": "3163:18:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 93,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 91,
                                "name": "_currencyAddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 44,
                                "src": "3184:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 92,
                                "name": "_tokenAddr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 42,
                                "src": "3201:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3184:27:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "hexValue": "66616c7365",
                              "id": 95,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3221:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            "id": 96,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "3184:42:0",
                            "trueExpression": {
                              "hexValue": "74727565",
                              "id": 94,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3214:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3163:63:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 98,
                        "nodeType": "ExpressionStatement",
                        "src": "3163:63:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 40,
                    "nodeType": "StructuredDocumentation",
                    "src": "2387:296:0",
                    "text": " @notice Create instance of exchange contract with respective token and currency token\n @param _tokenAddr     The address of the ERC-1155 Token\n @param _currencyAddr  The address of the ERC-1155 currency Token\n @param _currencyID    The ID of the ERC-1155 currency Token"
                  },
                  "id": 100,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 47,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 42,
                        "mutability": "mutable",
                        "name": "_tokenAddr",
                        "nodeType": "VariableDeclaration",
                        "scope": 100,
                        "src": "2698:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 41,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2698:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 44,
                        "mutability": "mutable",
                        "name": "_currencyAddr",
                        "nodeType": "VariableDeclaration",
                        "scope": 100,
                        "src": "2718:21:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 43,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2718:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 46,
                        "mutability": "mutable",
                        "name": "_currencyID",
                        "nodeType": "VariableDeclaration",
                        "scope": 100,
                        "src": "2741:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 45,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2741:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2697:64:0"
                  },
                  "returnParameters": {
                    "id": 48,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2769:0:0"
                  },
                  "scope": 1946,
                  "src": "2686:545:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 269,
                    "nodeType": "Block",
                    "src": "4547:2262:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 125,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 122,
                                "name": "_deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 111,
                                "src": "4585:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 123,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "4598:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 124,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "4598:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4585:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e696674797377617045786368616e6765235f63757272656e6379546f546f6b656e3a20444541444c494e455f4558434545444544",
                              "id": 126,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4615:55:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_19a3f1a625d24563dfdd73f37dff12b327fe32ae821bbbecd99a480f70182fb1",
                                "typeString": "literal_string \"NiftyswapExchange#_currencyToToken: DEADLINE_EXCEEDED\""
                              },
                              "value": "NiftyswapExchange#_currencyToToken: DEADLINE_EXCEEDED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_19a3f1a625d24563dfdd73f37dff12b327fe32ae821bbbecd99a480f70182fb1",
                                "typeString": "literal_string \"NiftyswapExchange#_currencyToToken: DEADLINE_EXCEEDED\""
                              }
                            ],
                            "id": 121,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4577:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4577:94:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 128,
                        "nodeType": "ExpressionStatement",
                        "src": "4577:94:0"
                      },
                      {
                        "assignments": [
                          130
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 130,
                            "mutability": "mutable",
                            "name": "nTokens",
                            "nodeType": "VariableDeclaration",
                            "scope": 269,
                            "src": "4716:15:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 129,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4716:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 133,
                        "initialValue": {
                          "expression": {
                            "id": 131,
                            "name": "_tokenIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 104,
                            "src": "4734:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 132,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4734:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4716:34:0"
                      },
                      {
                        "assignments": [
                          135
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 135,
                            "mutability": "mutable",
                            "name": "totalRefundCurrency",
                            "nodeType": "VariableDeclaration",
                            "scope": 269,
                            "src": "4756:27:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 134,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4756:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 137,
                        "initialValue": {
                          "id": 136,
                          "name": "_maxCurrency",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 109,
                          "src": "4786:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4756:42:0"
                      },
                      {
                        "expression": {
                          "id": 144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 138,
                            "name": "currencySold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 119,
                            "src": "4833:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 142,
                                "name": "nTokens",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 130,
                                "src": "4862:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 141,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "4848:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 139,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4852:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 140,
                                "nodeType": "ArrayTypeName",
                                "src": "4852:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 143,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4848:22:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "4833:37:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 145,
                        "nodeType": "ExpressionStatement",
                        "src": "4833:37:0"
                      },
                      {
                        "assignments": [
                          150
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 150,
                            "mutability": "mutable",
                            "name": "tokenReserves",
                            "nodeType": "VariableDeclaration",
                            "scope": 269,
                            "src": "4917:30:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 148,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4917:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 149,
                              "nodeType": "ArrayTypeName",
                              "src": "4917:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 156,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 154,
                              "name": "nTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 130,
                              "src": "4964:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4950:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 151,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4954:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 152,
                              "nodeType": "ArrayTypeName",
                              "src": "4954:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 155,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4950:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4917:55:0"
                      },
                      {
                        "expression": {
                          "id": 161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 157,
                            "name": "tokenReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 150,
                            "src": "5055:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 159,
                                "name": "_tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 104,
                                "src": "5089:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "id": 158,
                              "name": "_getTokenReserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1914,
                              "src": "5071:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256[] memory) view returns (uint256[] memory)"
                              }
                            },
                            "id": 160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5071:28:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "5055:44:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 162,
                        "nodeType": "ExpressionStatement",
                        "src": "5055:44:0"
                      },
                      {
                        "body": {
                          "id": 234,
                          "nodeType": "Block",
                          "src": "5298:1169:0",
                          "statements": [
                            {
                              "assignments": [
                                174
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 174,
                                  "mutability": "mutable",
                                  "name": "idBought",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 234,
                                  "src": "5364:16:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 173,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5364:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 178,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 175,
                                  "name": "_tokenIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 104,
                                  "src": "5383:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 177,
                                "indexExpression": {
                                  "id": 176,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 164,
                                  "src": "5393:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5383:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5364:31:0"
                            },
                            {
                              "assignments": [
                                180
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 180,
                                  "mutability": "mutable",
                                  "name": "amountBought",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 234,
                                  "src": "5403:20:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 179,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5403:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 184,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 181,
                                  "name": "_tokensBoughtAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 107,
                                  "src": "5426:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 183,
                                "indexExpression": {
                                  "id": 182,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 164,
                                  "src": "5447:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5426:23:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5403:46:0"
                            },
                            {
                              "assignments": [
                                186
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 186,
                                  "mutability": "mutable",
                                  "name": "tokenReserve",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 234,
                                  "src": "5457:20:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 185,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5457:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 190,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 187,
                                  "name": "tokenReserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 150,
                                  "src": "5480:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 189,
                                "indexExpression": {
                                  "id": 188,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 164,
                                  "src": "5494:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5480:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5457:39:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 194,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 192,
                                      "name": "amountBought",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 180,
                                      "src": "5513:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 193,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5528:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "5513:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e696674797377617045786368616e6765235f63757272656e6379546f546f6b656e3a204e554c4c5f544f4b454e535f424f55474854",
                                    "id": 195,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5531:56:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_8ce1043a90eeb2e90affd156b2f60e05432246676878b4f40d03039b7ad176ed",
                                      "typeString": "literal_string \"NiftyswapExchange#_currencyToToken: NULL_TOKENS_BOUGHT\""
                                    },
                                    "value": "NiftyswapExchange#_currencyToToken: NULL_TOKENS_BOUGHT"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_8ce1043a90eeb2e90affd156b2f60e05432246676878b4f40d03039b7ad176ed",
                                      "typeString": "literal_string \"NiftyswapExchange#_currencyToToken: NULL_TOKENS_BOUGHT\""
                                    }
                                  ],
                                  "id": 191,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5505:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5505:83:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 197,
                              "nodeType": "ExpressionStatement",
                              "src": "5505:83:0"
                            },
                            {
                              "assignments": [
                                199
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 199,
                                  "mutability": "mutable",
                                  "name": "currencyReserve",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 234,
                                  "src": "5649:23:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 198,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5649:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 203,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 200,
                                  "name": "currencyReserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39,
                                  "src": "5675:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 202,
                                "indexExpression": {
                                  "id": 201,
                                  "name": "idBought",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 174,
                                  "src": "5692:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5675:26:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5649:52:0"
                            },
                            {
                              "assignments": [
                                205
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 205,
                                  "mutability": "mutable",
                                  "name": "currencyAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 234,
                                  "src": "5899:22:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 204,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5899:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 211,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 207,
                                    "name": "amountBought",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 180,
                                    "src": "5936:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 208,
                                    "name": "currencyReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 199,
                                    "src": "5950:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 209,
                                    "name": "tokenReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 186,
                                    "src": "5967:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 206,
                                  "name": "getBuyPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 326,
                                  "src": "5924:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 210,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5924:56:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5899:81:0"
                            },
                            {
                              "expression": {
                                "id": 217,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 212,
                                  "name": "totalRefundCurrency",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 135,
                                  "src": "6148:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 215,
                                      "name": "currencyAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 205,
                                      "src": "6194:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 213,
                                      "name": "totalRefundCurrency",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 135,
                                      "src": "6170:19:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7418,
                                    "src": "6170:23:0",
                                    "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": 216,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6170:39:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6148:61:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 218,
                              "nodeType": "ExpressionStatement",
                              "src": "6148:61:0"
                            },
                            {
                              "expression": {
                                "id": 223,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 219,
                                    "name": "currencySold",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 119,
                                    "src": "6305:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 221,
                                  "indexExpression": {
                                    "id": 220,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 164,
                                    "src": "6318:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6305:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 222,
                                  "name": "currencyAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 205,
                                  "src": "6323:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6305:32:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 224,
                              "nodeType": "ExpressionStatement",
                              "src": "6305:32:0"
                            },
                            {
                              "expression": {
                                "id": 232,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 225,
                                    "name": "currencyReserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39,
                                    "src": "6396:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 227,
                                  "indexExpression": {
                                    "id": 226,
                                    "name": "idBought",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 174,
                                    "src": "6413:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6396:26:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 230,
                                      "name": "currencyAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 205,
                                      "src": "6445:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 228,
                                      "name": "currencyReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 199,
                                      "src": "6425:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 229,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7444,
                                    "src": "6425:19:0",
                                    "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": 231,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6425:35:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6396:64:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 233,
                              "nodeType": "ExpressionStatement",
                              "src": "6396:64:0"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 167,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 164,
                            "src": "5280:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 168,
                            "name": "nTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 130,
                            "src": "5284:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5280:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 235,
                        "initializationExpression": {
                          "assignments": [
                            164
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 164,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 235,
                              "src": "5265:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 163,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "5265:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 166,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 165,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5277:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "5265:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "5293:3:0",
                            "subExpression": {
                              "id": 170,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 164,
                              "src": "5293:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 172,
                          "nodeType": "ExpressionStatement",
                          "src": "5293:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "5260:1207:0"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 236,
                            "name": "totalRefundCurrency",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 135,
                            "src": "6513:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 237,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6535:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6513:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 253,
                        "nodeType": "IfStatement",
                        "src": "6509:133:0",
                        "trueBody": {
                          "id": 252,
                          "nodeType": "Block",
                          "src": "6538:104:0",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 244,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "6580:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                          "typeString": "contract NiftyswapExchange"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                          "typeString": "contract NiftyswapExchange"
                                        }
                                      ],
                                      "id": 243,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6572:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 242,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6572:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 245,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6572:13:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 246,
                                    "name": "_recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 113,
                                    "src": "6587:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 247,
                                    "name": "currencyID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 28,
                                    "src": "6599:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 248,
                                    "name": "totalRefundCurrency",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 135,
                                    "src": "6611:19:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "hexValue": "",
                                    "id": 249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6632:2:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 239,
                                    "name": "currency",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 22,
                                    "src": "6546:8:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155_$3875",
                                      "typeString": "contract IERC1155"
                                    }
                                  },
                                  "id": 241,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "safeTransferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3817,
                                  "src": "6546:25:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                                  }
                                },
                                "id": 250,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6546:89:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 251,
                              "nodeType": "ExpressionStatement",
                              "src": "6546:89:0"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 259,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6724:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                ],
                                "id": 258,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6716:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 257,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6716:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 260,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6716:13:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 261,
                              "name": "_recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 113,
                              "src": "6731:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 262,
                              "name": "_tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 104,
                              "src": "6743:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 263,
                              "name": "_tokensBoughtAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 107,
                              "src": "6754:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6776:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "id": 254,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20,
                              "src": "6688:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155_$3875",
                                "typeString": "contract IERC1155"
                              }
                            },
                            "id": 256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeBatchTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3833,
                            "src": "6688:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external"
                            }
                          },
                          "id": 265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6688:91:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 266,
                        "nodeType": "ExpressionStatement",
                        "src": "6688:91:0"
                      },
                      {
                        "expression": {
                          "id": 267,
                          "name": "currencySold",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 119,
                          "src": "6792:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 120,
                        "id": 268,
                        "nodeType": "Return",
                        "src": "6785:19:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 101,
                    "nodeType": "StructuredDocumentation",
                    "src": "3356:943:0",
                    "text": " @notice Convert currency tokens to Tokens _id and transfers Tokens to recipient.\n @dev User specifies MAXIMUM inputs (_maxCurrency) and EXACT outputs.\n @dev Assumes that all trades will be successful, or revert the whole tx\n @dev Exceeding currency tokens sent will be refunded to recipient\n @dev Sorting IDs is mandatory for efficient way of preventing duplicated IDs (which would lead to exploit)\n @param _tokenIds             Array of Tokens ID that are bought\n @param _tokensBoughtAmounts  Amount of Tokens id bought for each corresponding Token id in _tokenIds\n @param _maxCurrency          Total maximum amount of currency tokens to spend for all Token ids\n @param _deadline             Timestamp after which this transaction will be reverted\n @param _recipient            The address that receives output Tokens and refund\n @return currencySold How much currency was actually sold."
                  },
                  "id": 270,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [],
                      "id": 116,
                      "modifierName": {
                        "id": 115,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2331,
                        "src": "4490:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "4490:14:0"
                    }
                  ],
                  "name": "_currencyToToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 114,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 104,
                        "mutability": "mutable",
                        "name": "_tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 270,
                        "src": "4333:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 102,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4333:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 103,
                          "nodeType": "ArrayTypeName",
                          "src": "4333:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 107,
                        "mutability": "mutable",
                        "name": "_tokensBoughtAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 270,
                        "src": "4365:37:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 105,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4365:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 106,
                          "nodeType": "ArrayTypeName",
                          "src": "4365:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 109,
                        "mutability": "mutable",
                        "name": "_maxCurrency",
                        "nodeType": "VariableDeclaration",
                        "scope": 270,
                        "src": "4408:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 108,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4408:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 111,
                        "mutability": "mutable",
                        "name": "_deadline",
                        "nodeType": "VariableDeclaration",
                        "scope": 270,
                        "src": "4434:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 110,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4434:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 113,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 270,
                        "src": "4457:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 112,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4457:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4327:149:0"
                  },
                  "returnParameters": {
                    "id": 120,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 119,
                        "mutability": "mutable",
                        "name": "currencySold",
                        "nodeType": "VariableDeclaration",
                        "scope": 270,
                        "src": "4514:29:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 117,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4514:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 118,
                          "nodeType": "ArrayTypeName",
                          "src": "4514:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4513:31:0"
                  },
                  "scope": 1946,
                  "src": "4302:2507:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2159
                  ],
                  "body": {
                    "id": 325,
                    "nodeType": "Block",
                    "src": "7370:453:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 284,
                                  "name": "_assetSoldReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 275,
                                  "src": "7418:17:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 285,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7438:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7418:21:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 289,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 287,
                                  "name": "_assetBoughtReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 277,
                                  "src": "7443:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7465:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "7443:23:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "7418:48:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e696674797377617045786368616e67652367657442757950726963653a20454d5054595f52455345525645",
                              "id": 291,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7468:46:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a6dc61c09d9b84d199454a9e5ab583700e9384df8ecdace42e9947daaad53485",
                                "typeString": "literal_string \"NiftyswapExchange#getBuyPrice: EMPTY_RESERVE\""
                              },
                              "value": "NiftyswapExchange#getBuyPrice: EMPTY_RESERVE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a6dc61c09d9b84d199454a9e5ab583700e9384df8ecdace42e9947daaad53485",
                                "typeString": "literal_string \"NiftyswapExchange#getBuyPrice: EMPTY_RESERVE\""
                              }
                            ],
                            "id": 283,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7410:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7410:105:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 293,
                        "nodeType": "ExpressionStatement",
                        "src": "7410:105:0"
                      },
                      {
                        "assignments": [
                          295
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 295,
                            "mutability": "mutable",
                            "name": "numerator",
                            "nodeType": "VariableDeclaration",
                            "scope": 325,
                            "src": "7554:17:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 294,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7554:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 303,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "31303030",
                              "id": 301,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7620:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1000_by_1",
                                "typeString": "int_const 1000"
                              },
                              "value": "1000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1000_by_1",
                                "typeString": "int_const 1000"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 298,
                                  "name": "_assetBoughtAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 273,
                                  "src": "7596:18:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 296,
                                  "name": "_assetSoldReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 275,
                                  "src": "7574:17:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7366,
                                "src": "7574:21:0",
                                "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": 299,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7574:41:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 300,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7366,
                            "src": "7574:45:0",
                            "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": 302,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7574:51:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7554:71:0"
                      },
                      {
                        "assignments": [
                          305
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 305,
                            "mutability": "mutable",
                            "name": "denominator",
                            "nodeType": "VariableDeclaration",
                            "scope": 325,
                            "src": "7631:19:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 304,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7631:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 314,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 312,
                              "name": "FEE_MULTIPLIER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31,
                              "src": "7703:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "components": [
                                {
                                  "arguments": [
                                    {
                                      "id": 308,
                                      "name": "_assetBoughtAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 273,
                                      "src": "7678:18:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 306,
                                      "name": "_assetBoughtReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 277,
                                      "src": "7654:19:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 307,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7418,
                                    "src": "7654:23:0",
                                    "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": 309,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7654:43:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 310,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "7653:45:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7366,
                            "src": "7653:49:0",
                            "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": 313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7653:65:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7631:87:0"
                      },
                      {
                        "expression": {
                          "id": 321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 315,
                                "name": "price",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 281,
                                "src": "7725:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              null
                            ],
                            "id": 316,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "7724:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$__$",
                              "typeString": "tuple(uint256,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 318,
                                "name": "numerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 295,
                                "src": "7745:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 319,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 305,
                                "src": "7756:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 317,
                              "name": "divRound",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1804,
                              "src": "7736:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_bool_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256,bool)"
                              }
                            },
                            "id": 320,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7736:32:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                              "typeString": "tuple(uint256,bool)"
                            }
                          },
                          "src": "7724:44:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 322,
                        "nodeType": "ExpressionStatement",
                        "src": "7724:44:0"
                      },
                      {
                        "expression": {
                          "id": 323,
                          "name": "price",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 281,
                          "src": "7781:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 282,
                        "id": 324,
                        "nodeType": "Return",
                        "src": "7774:12:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 271,
                    "nodeType": "StructuredDocumentation",
                    "src": "6813:385:0",
                    "text": " @dev Pricing function used for converting between currency token to Tokens.\n @param _assetBoughtAmount  Amount of Tokens being bought.\n @param _assetSoldReserve   Amount of currency tokens in exchange reserves.\n @param _assetBoughtReserve Amount of Tokens (output type) in exchange reserves.\n @return price Amount of currency tokens to send to Niftyswap."
                  },
                  "functionSelector": "fca16c3b",
                  "id": 326,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBuyPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 279,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7323:8:0"
                  },
                  "parameters": {
                    "id": 278,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 273,
                        "mutability": "mutable",
                        "name": "_assetBoughtAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 326,
                        "src": "7227:26:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 272,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7227:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 275,
                        "mutability": "mutable",
                        "name": "_assetSoldReserve",
                        "nodeType": "VariableDeclaration",
                        "scope": 326,
                        "src": "7259:25:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 274,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7259:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 277,
                        "mutability": "mutable",
                        "name": "_assetBoughtReserve",
                        "nodeType": "VariableDeclaration",
                        "scope": 326,
                        "src": "7290:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 276,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7290:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7221:97:0"
                  },
                  "returnParameters": {
                    "id": 282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 281,
                        "mutability": "mutable",
                        "name": "price",
                        "nodeType": "VariableDeclaration",
                        "scope": 326,
                        "src": "7353:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 280,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7353:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7352:15:0"
                  },
                  "scope": 1946,
                  "src": "7201:622:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 487,
                    "nodeType": "Block",
                    "src": "8913:2189:0",
                    "statements": [
                      {
                        "assignments": [
                          348
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 348,
                            "mutability": "mutable",
                            "name": "nTokens",
                            "nodeType": "VariableDeclaration",
                            "scope": 487,
                            "src": "8957:15:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 347,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8957:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 351,
                        "initialValue": {
                          "expression": {
                            "id": 349,
                            "name": "_tokenIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 330,
                            "src": "8975:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "8975:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8957:34:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 353,
                                "name": "_deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 337,
                                "src": "9030:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 354,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "9043:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "9043:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9030:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e696674797377617045786368616e6765235f746f6b656e546f43757272656e63793a20444541444c494e455f4558434545444544",
                              "id": 357,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9060:55:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_372ca040d163edeef926a089768a4d493c18cb4d0d59e6a399fced9bc4b3822e",
                                "typeString": "literal_string \"NiftyswapExchange#_tokenToCurrency: DEADLINE_EXCEEDED\""
                              },
                              "value": "NiftyswapExchange#_tokenToCurrency: DEADLINE_EXCEEDED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_372ca040d163edeef926a089768a4d493c18cb4d0d59e6a399fced9bc4b3822e",
                                "typeString": "literal_string \"NiftyswapExchange#_tokenToCurrency: DEADLINE_EXCEEDED\""
                              }
                            ],
                            "id": 352,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "9022:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 358,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9022:94:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 359,
                        "nodeType": "ExpressionStatement",
                        "src": "9022:94:0"
                      },
                      {
                        "assignments": [
                          361
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 361,
                            "mutability": "mutable",
                            "name": "totalCurrency",
                            "nodeType": "VariableDeclaration",
                            "scope": 487,
                            "src": "9151:21:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 360,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9151:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 363,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9175:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9151:25:0"
                      },
                      {
                        "expression": {
                          "id": 370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 364,
                            "name": "currencyBought",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 345,
                            "src": "9229:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 368,
                                "name": "nTokens",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 348,
                                "src": "9260:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "9246:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (uint256[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 365,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9250:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 366,
                                "nodeType": "ArrayTypeName",
                                "src": "9250:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                  "typeString": "uint256[]"
                                }
                              }
                            },
                            "id": 369,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9246:22:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "9229:39:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 371,
                        "nodeType": "ExpressionStatement",
                        "src": "9229:39:0"
                      },
                      {
                        "assignments": [
                          376
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 376,
                            "mutability": "mutable",
                            "name": "tokenReserves",
                            "nodeType": "VariableDeclaration",
                            "scope": 487,
                            "src": "9274:30:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 374,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9274:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 375,
                              "nodeType": "ArrayTypeName",
                              "src": "9274:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 382,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 380,
                              "name": "nTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 348,
                              "src": "9321:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "9307:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 377,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9311:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 378,
                              "nodeType": "ArrayTypeName",
                              "src": "9311:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9307:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9274:55:0"
                      },
                      {
                        "expression": {
                          "id": 387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 383,
                            "name": "tokenReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 376,
                            "src": "9362:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 385,
                                "name": "_tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 330,
                                "src": "9396:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "id": 384,
                              "name": "_getTokenReserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1914,
                              "src": "9378:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256[] memory) view returns (uint256[] memory)"
                              }
                            },
                            "id": 386,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9378:28:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "9362:44:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 388,
                        "nodeType": "ExpressionStatement",
                        "src": "9362:44:0"
                      },
                      {
                        "body": {
                          "id": 463,
                          "nodeType": "Block",
                          "src": "9647:1157:0",
                          "statements": [
                            {
                              "assignments": [
                                400
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 400,
                                  "mutability": "mutable",
                                  "name": "idSold",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 463,
                                  "src": "9713:14:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 399,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9713:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 404,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 401,
                                  "name": "_tokenIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 330,
                                  "src": "9730:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 403,
                                "indexExpression": {
                                  "id": 402,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 390,
                                  "src": "9740:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9730:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9713:29:0"
                            },
                            {
                              "assignments": [
                                406
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 406,
                                  "mutability": "mutable",
                                  "name": "amountSold",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 463,
                                  "src": "9750:18:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 405,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9750:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 410,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 407,
                                  "name": "_tokensSoldAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 333,
                                  "src": "9771:18:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 409,
                                "indexExpression": {
                                  "id": 408,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 390,
                                  "src": "9790:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9771:21:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9750:42:0"
                            },
                            {
                              "assignments": [
                                412
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 412,
                                  "mutability": "mutable",
                                  "name": "tokenReserve",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 463,
                                  "src": "9800:20:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 411,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9800:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 416,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 413,
                                  "name": "tokenReserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 376,
                                  "src": "9823:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 415,
                                "indexExpression": {
                                  "id": 414,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 390,
                                  "src": "9837:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9823:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9800:39:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 420,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 418,
                                      "name": "amountSold",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 406,
                                      "src": "9902:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 419,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9915:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "9902:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e696674797377617045786368616e6765235f746f6b656e546f43757272656e63793a204e554c4c5f544f4b454e535f534f4c44",
                                    "id": 421,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9918:54:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_987e4f9b2a0479f8ad056955933c71c0c79ed4a1dfb5d8ebe7a93defabffdfce",
                                      "typeString": "literal_string \"NiftyswapExchange#_tokenToCurrency: NULL_TOKENS_SOLD\""
                                    },
                                    "value": "NiftyswapExchange#_tokenToCurrency: NULL_TOKENS_SOLD"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_987e4f9b2a0479f8ad056955933c71c0c79ed4a1dfb5d8ebe7a93defabffdfce",
                                      "typeString": "literal_string \"NiftyswapExchange#_tokenToCurrency: NULL_TOKENS_SOLD\""
                                    }
                                  ],
                                  "id": 417,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "9894:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9894:79:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 423,
                              "nodeType": "ExpressionStatement",
                              "src": "9894:79:0"
                            },
                            {
                              "assignments": [
                                425
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 425,
                                  "mutability": "mutable",
                                  "name": "currencyReserve",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 463,
                                  "src": "10034:23:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 424,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10034:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 429,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 426,
                                  "name": "currencyReserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39,
                                  "src": "10060:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 428,
                                "indexExpression": {
                                  "id": 427,
                                  "name": "idSold",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 400,
                                  "src": "10077:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10060:24:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10034:50:0"
                            },
                            {
                              "assignments": [
                                431
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 431,
                                  "mutability": "mutable",
                                  "name": "currencyAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 463,
                                  "src": "10354:22:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 430,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10354:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 440,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 433,
                                    "name": "amountSold",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 406,
                                    "src": "10392:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 436,
                                        "name": "amountSold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 406,
                                        "src": "10421:10:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "id": 434,
                                        "name": "tokenReserve",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 412,
                                        "src": "10404:12:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 435,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7418,
                                      "src": "10404:16:0",
                                      "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": 437,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10404:28:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 438,
                                    "name": "currencyReserve",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 425,
                                    "src": "10434:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 432,
                                  "name": "getSellPrice",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 541,
                                  "src": "10379:12:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 439,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10379:71:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10354:96:0"
                            },
                            {
                              "expression": {
                                "id": 446,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 441,
                                  "name": "totalCurrency",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 361,
                                  "src": "10497:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 444,
                                      "name": "currencyAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 431,
                                      "src": "10531:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 442,
                                      "name": "totalCurrency",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 361,
                                      "src": "10513:13:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 443,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7444,
                                    "src": "10513:17:0",
                                    "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": 445,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10513:33:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10497:49:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 447,
                              "nodeType": "ExpressionStatement",
                              "src": "10497:49:0"
                            },
                            {
                              "expression": {
                                "id": 455,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 448,
                                    "name": "currencyReserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39,
                                    "src": "10605:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 450,
                                  "indexExpression": {
                                    "id": 449,
                                    "name": "idSold",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 400,
                                    "src": "10622:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10605:24:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 453,
                                      "name": "currencyAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 431,
                                      "src": "10652:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 451,
                                      "name": "currencyReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 425,
                                      "src": "10632:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 452,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7418,
                                    "src": "10632:19:0",
                                    "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": 454,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10632:35:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10605:62:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 456,
                              "nodeType": "ExpressionStatement",
                              "src": "10605:62:0"
                            },
                            {
                              "expression": {
                                "id": 461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 457,
                                    "name": "currencyBought",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 345,
                                    "src": "10763:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 459,
                                  "indexExpression": {
                                    "id": 458,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 390,
                                    "src": "10778:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "10763:17:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 460,
                                  "name": "currencyAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 431,
                                  "src": "10783:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10763:34:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 462,
                              "nodeType": "ExpressionStatement",
                              "src": "10763:34:0"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 393,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 390,
                            "src": "9629:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 394,
                            "name": "nTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 348,
                            "src": "9633:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9629:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 464,
                        "initializationExpression": {
                          "assignments": [
                            390
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 390,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 464,
                              "src": "9614:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 389,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "9614:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 392,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 391,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9626:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9614:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 397,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "9642:3:0",
                            "subExpression": {
                              "id": 396,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 390,
                              "src": "9642:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 398,
                          "nodeType": "ExpressionStatement",
                          "src": "9642:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "9609:1195:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 466,
                                "name": "totalCurrency",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 361,
                                "src": "10851:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 467,
                                "name": "_minCurrency",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 335,
                                "src": "10868:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10851:29:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e696674797377617045786368616e6765235f746f6b656e546f43757272656e63793a20494e53554646494349454e545f43555252454e43595f414d4f554e54",
                              "id": 469,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10882:66:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_38a63899bec963e3ae188c53efe07af8ac1478872de543a93c418dfd5caabc9b",
                                "typeString": "literal_string \"NiftyswapExchange#_tokenToCurrency: INSUFFICIENT_CURRENCY_AMOUNT\""
                              },
                              "value": "NiftyswapExchange#_tokenToCurrency: INSUFFICIENT_CURRENCY_AMOUNT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_38a63899bec963e3ae188c53efe07af8ac1478872de543a93c418dfd5caabc9b",
                                "typeString": "literal_string \"NiftyswapExchange#_tokenToCurrency: INSUFFICIENT_CURRENCY_AMOUNT\""
                              }
                            ],
                            "id": 465,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10843:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10843:106:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 471,
                        "nodeType": "ExpressionStatement",
                        "src": "10843:106:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 477,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "11020:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                ],
                                "id": 476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "11012:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 475,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "11012:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11012:13:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 479,
                              "name": "_recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 339,
                              "src": "11027:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 480,
                              "name": "currencyID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28,
                              "src": "11039:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 481,
                              "name": "totalCurrency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 361,
                              "src": "11051:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 482,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11066:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "id": 472,
                              "name": "currency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22,
                              "src": "10986:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155_$3875",
                                "typeString": "contract IERC1155"
                              }
                            },
                            "id": 474,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3817,
                            "src": "10986:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                            }
                          },
                          "id": 483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10986:83:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 484,
                        "nodeType": "ExpressionStatement",
                        "src": "10986:83:0"
                      },
                      {
                        "expression": {
                          "id": 485,
                          "name": "currencyBought",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 345,
                          "src": "11083:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 346,
                        "id": 486,
                        "nodeType": "Return",
                        "src": "11076:21:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 327,
                    "nodeType": "StructuredDocumentation",
                    "src": "7827:838:0",
                    "text": " @notice Convert Tokens _id to currency tokens and transfers Tokens to recipient.\n @dev User specifies EXACT Tokens _id sold and MINIMUM currency tokens received.\n @dev Assumes that all trades will be valid, or the whole tx will fail\n @dev Sorting _tokenIds is mandatory for efficient way of preventing duplicated IDs (which would lead to errors)\n @param _tokenIds          Array of Token IDs that are sold\n @param _tokensSoldAmounts Array of Amount of Tokens sold for each id in _tokenIds.\n @param _minCurrency       Minimum amount of currency tokens to receive\n @param _deadline          Timestamp after which this transaction will be reverted\n @param _recipient         The address that receives output currency tokens.\n @return currencyBought How much currency was actually purchased."
                  },
                  "id": 488,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [],
                      "id": 342,
                      "modifierName": {
                        "id": 341,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2331,
                        "src": "8854:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "8854:14:0"
                    }
                  ],
                  "name": "_tokenToCurrency",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 340,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 330,
                        "mutability": "mutable",
                        "name": "_tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 488,
                        "src": "8699:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 328,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8699:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 329,
                          "nodeType": "ArrayTypeName",
                          "src": "8699:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 333,
                        "mutability": "mutable",
                        "name": "_tokensSoldAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 488,
                        "src": "8731:35:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 331,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8731:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 332,
                          "nodeType": "ArrayTypeName",
                          "src": "8731:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 335,
                        "mutability": "mutable",
                        "name": "_minCurrency",
                        "nodeType": "VariableDeclaration",
                        "scope": 488,
                        "src": "8772:20:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 334,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8772:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 337,
                        "mutability": "mutable",
                        "name": "_deadline",
                        "nodeType": "VariableDeclaration",
                        "scope": 488,
                        "src": "8798:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 336,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8798:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 339,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 488,
                        "src": "8821:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 338,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8821:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8693:147:0"
                  },
                  "returnParameters": {
                    "id": 346,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 345,
                        "mutability": "mutable",
                        "name": "currencyBought",
                        "nodeType": "VariableDeclaration",
                        "scope": 488,
                        "src": "8878:31:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 343,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "8878:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 344,
                          "nodeType": "ArrayTypeName",
                          "src": "8878:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8877:33:0"
                  },
                  "scope": 1946,
                  "src": "8668:2434:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2171
                  ],
                  "body": {
                    "id": 540,
                    "nodeType": "Block",
                    "src": "11643:527:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 508,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 504,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 502,
                                  "name": "_assetSoldReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 493,
                                  "src": "11690:17:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 503,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11710:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "11690:21:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 507,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 505,
                                  "name": "_assetBoughtReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 495,
                                  "src": "11715:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 506,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11737:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "11715:23:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "11690:48:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e696674797377617045786368616e67652367657453656c6c50726963653a20454d5054595f52455345525645",
                              "id": 509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11740:47:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b32069aab22ccf215e3be464c9761149b70171870786512bdd69a12a0bd83aa8",
                                "typeString": "literal_string \"NiftyswapExchange#getSellPrice: EMPTY_RESERVE\""
                              },
                              "value": "NiftyswapExchange#getSellPrice: EMPTY_RESERVE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b32069aab22ccf215e3be464c9761149b70171870786512bdd69a12a0bd83aa8",
                                "typeString": "literal_string \"NiftyswapExchange#getSellPrice: EMPTY_RESERVE\""
                              }
                            ],
                            "id": 501,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11682:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 510,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11682:106:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 511,
                        "nodeType": "ExpressionStatement",
                        "src": "11682:106:0"
                      },
                      {
                        "assignments": [
                          513
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 513,
                            "mutability": "mutable",
                            "name": "_assetSoldAmount_withFee",
                            "nodeType": "VariableDeclaration",
                            "scope": 540,
                            "src": "11841:32:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 512,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11841:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 518,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 516,
                              "name": "FEE_MULTIPLIER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31,
                              "src": "11897:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 514,
                              "name": "_assetSoldAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 491,
                              "src": "11876:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 515,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7366,
                            "src": "11876:20:0",
                            "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": 517,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11876:36:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11841:71:0"
                      },
                      {
                        "assignments": [
                          520
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 520,
                            "mutability": "mutable",
                            "name": "numerator",
                            "nodeType": "VariableDeclaration",
                            "scope": 540,
                            "src": "11918:17:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 519,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11918:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 525,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 523,
                              "name": "_assetBoughtReserve",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 495,
                              "src": "11967:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 521,
                              "name": "_assetSoldAmount_withFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 513,
                              "src": "11938:24:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 522,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7366,
                            "src": "11938:28:0",
                            "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": 524,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11938:49:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11918:69:0"
                      },
                      {
                        "assignments": [
                          527
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 527,
                            "mutability": "mutable",
                            "name": "denominator",
                            "nodeType": "VariableDeclaration",
                            "scope": 540,
                            "src": "11993:19:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 526,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11993:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 535,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 533,
                              "name": "_assetSoldAmount_withFee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 513,
                              "src": "12047:24:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "hexValue": "31303030",
                                  "id": 530,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12037:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  }
                                ],
                                "expression": {
                                  "id": 528,
                                  "name": "_assetSoldReserve",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 493,
                                  "src": "12015:17:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7366,
                                "src": "12015:21:0",
                                "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": 531,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12015:27:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 532,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7444,
                            "src": "12015:31:0",
                            "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": 534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12015:57:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11993:79:0"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 536,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 520,
                            "src": "12085:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 537,
                            "name": "denominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 527,
                            "src": "12097:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12085:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 500,
                        "id": 539,
                        "nodeType": "Return",
                        "src": "12078:30:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 489,
                    "nodeType": "StructuredDocumentation",
                    "src": "11106:366:0",
                    "text": " @dev Pricing function used for converting Tokens to currency token.\n @param _assetSoldAmount    Amount of Tokens being sold.\n @param _assetSoldReserve   Amount of Tokens in exchange reserves.\n @param _assetBoughtReserve Amount of currency tokens in exchange reserves.\n @return price Amount of currency tokens to receive from Niftyswap."
                  },
                  "functionSelector": "6ee8e134",
                  "id": 541,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSellPrice",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 497,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11596:8:0"
                  },
                  "parameters": {
                    "id": 496,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 491,
                        "mutability": "mutable",
                        "name": "_assetSoldAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 541,
                        "src": "11502:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 490,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11502:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 493,
                        "mutability": "mutable",
                        "name": "_assetSoldReserve",
                        "nodeType": "VariableDeclaration",
                        "scope": 541,
                        "src": "11532:25:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 492,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11532:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 495,
                        "mutability": "mutable",
                        "name": "_assetBoughtReserve",
                        "nodeType": "VariableDeclaration",
                        "scope": 541,
                        "src": "11563:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 494,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11563:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11496:95:0"
                  },
                  "returnParameters": {
                    "id": 500,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 499,
                        "mutability": "mutable",
                        "name": "price",
                        "nodeType": "VariableDeclaration",
                        "scope": 541,
                        "src": "11626:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 498,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11626:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11625:15:0"
                  },
                  "scope": 1946,
                  "src": "11475:695:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 839,
                    "nodeType": "Block",
                    "src": "13438:4430:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 564,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 561,
                                "name": "_deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 555,
                                "src": "13472:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "expression": {
                                  "id": 562,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "13485:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 563,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "13485:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13472:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e696674797377617045786368616e6765235f6164644c69717569646974793a20444541444c494e455f4558434545444544",
                              "id": 565,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13502:52:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8e5451db8f097505f008848c271b3a01df07e16c92c5e51fc32aed55e8bcea35",
                                "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: DEADLINE_EXCEEDED\""
                              },
                              "value": "NiftyswapExchange#_addLiquidity: DEADLINE_EXCEEDED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8e5451db8f097505f008848c271b3a01df07e16c92c5e51fc32aed55e8bcea35",
                                "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: DEADLINE_EXCEEDED\""
                              }
                            ],
                            "id": 560,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "13464:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13464:91:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 567,
                        "nodeType": "ExpressionStatement",
                        "src": "13464:91:0"
                      },
                      {
                        "assignments": [
                          569
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 569,
                            "mutability": "mutable",
                            "name": "nTokens",
                            "nodeType": "VariableDeclaration",
                            "scope": 839,
                            "src": "13590:15:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 568,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13590:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 572,
                        "initialValue": {
                          "expression": {
                            "id": 570,
                            "name": "_tokenIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 547,
                            "src": "13608:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 571,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "13608:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13590:34:0"
                      },
                      {
                        "assignments": [
                          574
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 574,
                            "mutability": "mutable",
                            "name": "totalCurrency",
                            "nodeType": "VariableDeclaration",
                            "scope": 839,
                            "src": "13664:21:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 573,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "13664:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 576,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "13688:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13664:25:0"
                      },
                      {
                        "assignments": [
                          581
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 581,
                            "mutability": "mutable",
                            "name": "liquiditiesToMint",
                            "nodeType": "VariableDeclaration",
                            "scope": 839,
                            "src": "13777:34:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 579,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "13777:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 580,
                              "nodeType": "ArrayTypeName",
                              "src": "13777:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 587,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 585,
                              "name": "nTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 569,
                              "src": "13828:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "13814:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 582,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "13818:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 583,
                              "nodeType": "ArrayTypeName",
                              "src": "13818:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13814:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13777:59:0"
                      },
                      {
                        "assignments": [
                          592
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 592,
                            "mutability": "mutable",
                            "name": "currencyAmounts",
                            "nodeType": "VariableDeclaration",
                            "scope": 839,
                            "src": "13842:32:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 590,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "13842:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 591,
                              "nodeType": "ArrayTypeName",
                              "src": "13842:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 598,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 596,
                              "name": "nTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 569,
                              "src": "13891:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 595,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "13877:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 593,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "13881:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 594,
                              "nodeType": "ArrayTypeName",
                              "src": "13881:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 597,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13877:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13842:57:0"
                      },
                      {
                        "assignments": [
                          603
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 603,
                            "mutability": "mutable",
                            "name": "tokenReserves",
                            "nodeType": "VariableDeclaration",
                            "scope": 839,
                            "src": "13905:30:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 601,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "13905:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 602,
                              "nodeType": "ArrayTypeName",
                              "src": "13905:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 609,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 607,
                              "name": "nTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 569,
                              "src": "13952:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 606,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "13938:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 604,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "13942:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 605,
                              "nodeType": "ArrayTypeName",
                              "src": "13942:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13938:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13905:55:0"
                      },
                      {
                        "expression": {
                          "id": 614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 610,
                            "name": "tokenReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 603,
                            "src": "13993:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 612,
                                "name": "_tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 547,
                                "src": "14027:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "id": 611,
                              "name": "_getTokenReserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1914,
                              "src": "14009:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256[] memory) view returns (uint256[] memory)"
                              }
                            },
                            "id": 613,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14009:28:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "13993:44:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 615,
                        "nodeType": "ExpressionStatement",
                        "src": "13993:44:0"
                      },
                      {
                        "body": {
                          "id": 807,
                          "nodeType": "Block",
                          "src": "14249:3265:0",
                          "statements": [
                            {
                              "assignments": [
                                627
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 627,
                                  "mutability": "mutable",
                                  "name": "tokenId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 807,
                                  "src": "14315:15:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 626,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14315:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 631,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 628,
                                  "name": "_tokenIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 547,
                                  "src": "14333:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 630,
                                "indexExpression": {
                                  "id": 629,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 617,
                                  "src": "14343:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14333:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14315:30:0"
                            },
                            {
                              "assignments": [
                                633
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 633,
                                  "mutability": "mutable",
                                  "name": "amount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 807,
                                  "src": "14353:14:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 632,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14353:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 637,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 634,
                                  "name": "_tokenAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 550,
                                  "src": "14370:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 636,
                                "indexExpression": {
                                  "id": 635,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 617,
                                  "src": "14384:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14370:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14353:33:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 643,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 639,
                                        "name": "_maxCurrency",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 553,
                                        "src": "14449:12:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 641,
                                      "indexExpression": {
                                        "id": 640,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 617,
                                        "src": "14462:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "14449:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 642,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14467:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "14449:19:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e696674797377617045786368616e6765235f6164644c69717569646974793a204e554c4c5f4d41585f43555252454e4359",
                                    "id": 644,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14470:52:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_0654c62a9f2b2be63178e7fdd2aaccde0c85e31a46db6b17394b62e726e93a2b",
                                      "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: NULL_MAX_CURRENCY\""
                                    },
                                    "value": "NiftyswapExchange#_addLiquidity: NULL_MAX_CURRENCY"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_0654c62a9f2b2be63178e7fdd2aaccde0c85e31a46db6b17394b62e726e93a2b",
                                      "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: NULL_MAX_CURRENCY\""
                                    }
                                  ],
                                  "id": 638,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "14441:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14441:82:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 646,
                              "nodeType": "ExpressionStatement",
                              "src": "14441:82:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 650,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 648,
                                      "name": "amount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 633,
                                      "src": "14539:6:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 649,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14548:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "14539:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e696674797377617045786368616e6765235f6164644c69717569646974793a204e554c4c5f544f4b454e535f414d4f554e54",
                                    "id": 651,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "14551:53:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_9600902febc493c3a01e11fedb1af10a0adefc762e5e4d749716589879688d82",
                                      "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: NULL_TOKENS_AMOUNT\""
                                    },
                                    "value": "NiftyswapExchange#_addLiquidity: NULL_TOKENS_AMOUNT"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_9600902febc493c3a01e11fedb1af10a0adefc762e5e4d749716589879688d82",
                                      "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: NULL_TOKENS_AMOUNT\""
                                    }
                                  ],
                                  "id": 647,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "14531:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 652,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14531:74:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 653,
                              "nodeType": "ExpressionStatement",
                              "src": "14531:74:0"
                            },
                            {
                              "condition": {
                                "id": 654,
                                "name": "currencyPoolBanned",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 24,
                                "src": "14735:18:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 663,
                              "nodeType": "IfStatement",
                              "src": "14731:133:0",
                              "trueBody": {
                                "id": 662,
                                "nodeType": "Block",
                                "src": "14755:109:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 658,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 656,
                                            "name": "tokenId",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 627,
                                            "src": "14773:7:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "id": 657,
                                            "name": "currencyID",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 28,
                                            "src": "14784:10:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "14773:21:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "4e696674797377617045786368616e6765235f6164644c69717569646974793a2043555252454e43595f504f4f4c5f464f5242494444454e",
                                          "id": 659,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "14796:58:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_8f56fd0d94eacd59df12e68b94825fe456ef793368508825261acd61b34db33e",
                                            "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: CURRENCY_POOL_FORBIDDEN\""
                                          },
                                          "value": "NiftyswapExchange#_addLiquidity: CURRENCY_POOL_FORBIDDEN"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_8f56fd0d94eacd59df12e68b94825fe456ef793368508825261acd61b34db33e",
                                            "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: CURRENCY_POOL_FORBIDDEN\""
                                          }
                                        ],
                                        "id": 655,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "14765:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 660,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14765:90:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 661,
                                    "nodeType": "ExpressionStatement",
                                    "src": "14765:90:0"
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                665
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 665,
                                  "mutability": "mutable",
                                  "name": "totalLiquidity",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 807,
                                  "src": "14934:22:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 664,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14934:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 669,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 666,
                                  "name": "totalSupplies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35,
                                  "src": "14959:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 668,
                                "indexExpression": {
                                  "id": 667,
                                  "name": "tokenId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 627,
                                  "src": "14973:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14959:22:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14934:47:0"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 670,
                                  "name": "totalLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 665,
                                  "src": "15046:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 671,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15063:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "15046:18:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 805,
                                "nodeType": "Block",
                                "src": "16749:759:0",
                                "statements": [
                                  {
                                    "assignments": [
                                      762
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 762,
                                        "mutability": "mutable",
                                        "name": "maxCurrency",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 805,
                                        "src": "16759:19:0",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 761,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "16759:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 766,
                                    "initialValue": {
                                      "baseExpression": {
                                        "id": 763,
                                        "name": "_maxCurrency",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 553,
                                        "src": "16781:12:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 765,
                                      "indexExpression": {
                                        "id": 764,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 617,
                                        "src": "16794:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "16781:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "16759:37:0"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 770,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 768,
                                            "name": "maxCurrency",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 762,
                                            "src": "16900:11:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "hexValue": "31303030303030303030",
                                            "id": 769,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "16915:10:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1000000000_by_1",
                                              "typeString": "int_const 1000000000"
                                            },
                                            "value": "1000000000"
                                          },
                                          "src": "16900:25:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "4e696674797377617045786368616e6765235f6164644c69717569646974793a20494e56414c49445f43555252454e43595f414d4f554e54",
                                          "id": 771,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "16927:58:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_44174fac91788d8526e52183ec0fd7e31400b263d9af8503e8d3fcf7e5d626bd",
                                            "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: INVALID_CURRENCY_AMOUNT\""
                                          },
                                          "value": "NiftyswapExchange#_addLiquidity: INVALID_CURRENCY_AMOUNT"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_44174fac91788d8526e52183ec0fd7e31400b263d9af8503e8d3fcf7e5d626bd",
                                            "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: INVALID_CURRENCY_AMOUNT\""
                                          }
                                        ],
                                        "id": 767,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "16892:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 772,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16892:94:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 773,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16892:94:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 778,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 774,
                                          "name": "currencyReserves",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 39,
                                          "src": "17067:16:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 776,
                                        "indexExpression": {
                                          "id": 775,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 627,
                                          "src": "17084:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "17067:25:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 777,
                                        "name": "maxCurrency",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 762,
                                        "src": "17095:11:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17067:39:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 779,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17067:39:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 785,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 780,
                                        "name": "totalCurrency",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 574,
                                        "src": "17149:13:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 783,
                                            "name": "maxCurrency",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 762,
                                            "src": "17183:11:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 781,
                                            "name": "totalCurrency",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 574,
                                            "src": "17165:13:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 782,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7444,
                                          "src": "17165:17:0",
                                          "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": 784,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17165:30:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17149:46:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 786,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17149:46:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 791,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 787,
                                          "name": "totalSupplies",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 35,
                                          "src": "17346:13:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 789,
                                        "indexExpression": {
                                          "id": 788,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 627,
                                          "src": "17360:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "17346:22:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 790,
                                        "name": "maxCurrency",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 762,
                                        "src": "17371:11:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17346:36:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 792,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17346:36:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 797,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 793,
                                          "name": "liquiditiesToMint",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 581,
                                          "src": "17423:17:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 795,
                                        "indexExpression": {
                                          "id": 794,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 617,
                                          "src": "17441:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "17423:20:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 796,
                                        "name": "maxCurrency",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 762,
                                        "src": "17446:11:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17423:34:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 798,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17423:34:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 803,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 799,
                                          "name": "currencyAmounts",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 592,
                                          "src": "17467:15:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 801,
                                        "indexExpression": {
                                          "id": 800,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 617,
                                          "src": "17483:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "17467:18:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 802,
                                        "name": "maxCurrency",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 762,
                                        "src": "17488:11:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "17467:32:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 804,
                                    "nodeType": "ExpressionStatement",
                                    "src": "17467:32:0"
                                  }
                                ]
                              },
                              "id": 806,
                              "nodeType": "IfStatement",
                              "src": "15042:2466:0",
                              "trueBody": {
                                "id": 760,
                                "nodeType": "Block",
                                "src": "15066:1677:0",
                                "statements": [
                                  {
                                    "assignments": [
                                      674
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 674,
                                        "mutability": "mutable",
                                        "name": "currencyReserve",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 760,
                                        "src": "15147:23:0",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 673,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "15147:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 678,
                                    "initialValue": {
                                      "baseExpression": {
                                        "id": 675,
                                        "name": "currencyReserves",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 39,
                                        "src": "15173:16:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 677,
                                      "indexExpression": {
                                        "id": 676,
                                        "name": "tokenId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 627,
                                        "src": "15190:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15173:25:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15147:51:0"
                                  },
                                  {
                                    "assignments": [
                                      680
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 680,
                                        "mutability": "mutable",
                                        "name": "tokenReserve",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 760,
                                        "src": "15237:20:0",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 679,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "15237:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 684,
                                    "initialValue": {
                                      "baseExpression": {
                                        "id": 681,
                                        "name": "tokenReserves",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 603,
                                        "src": "15260:13:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 683,
                                      "indexExpression": {
                                        "id": 682,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 617,
                                        "src": "15274:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "15260:16:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15237:39:0"
                                  },
                                  {
                                    "assignments": [
                                      686,
                                      688
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 686,
                                        "mutability": "mutable",
                                        "name": "currencyAmount",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 760,
                                        "src": "15729:22:0",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 685,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "15729:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 688,
                                        "mutability": "mutable",
                                        "name": "rounded",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 760,
                                        "src": "15753:12:0",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "typeName": {
                                          "id": 687,
                                          "name": "bool",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "15753:4:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 699,
                                    "initialValue": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "id": 692,
                                              "name": "currencyReserve",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 674,
                                              "src": "15789:15:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "id": 690,
                                              "name": "amount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 633,
                                              "src": "15778:6:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 691,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 7366,
                                            "src": "15778:10:0",
                                            "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": 693,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "15778:27:0",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 696,
                                              "name": "amount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 633,
                                              "src": "15824:6:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "id": 694,
                                              "name": "tokenReserve",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 680,
                                              "src": "15807:12:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 695,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sub",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 7418,
                                            "src": "15807:16:0",
                                            "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": 697,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "15807:24:0",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 689,
                                        "name": "divRound",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1804,
                                        "src": "15769:8:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_bool_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256,bool)"
                                        }
                                      },
                                      "id": 698,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15769:63:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                                        "typeString": "tuple(uint256,bool)"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "15728:104:0"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 705,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "baseExpression": {
                                              "id": 701,
                                              "name": "_maxCurrency",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 553,
                                              "src": "15850:12:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 703,
                                            "indexExpression": {
                                              "id": 702,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 617,
                                              "src": "15863:1:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "15850:15:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "id": 704,
                                            "name": "currencyAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 686,
                                            "src": "15869:14:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "15850:33:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "4e696674797377617045786368616e6765235f6164644c69717569646974793a204d41585f43555252454e43595f414d4f554e545f4558434545444544",
                                          "id": 706,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "15885:63:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_4d5d44db915b9cc1bc9713a04531b8ab3fff17206fb41c24946b0a410a7be41e",
                                            "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: MAX_CURRENCY_AMOUNT_EXCEEDED\""
                                          },
                                          "value": "NiftyswapExchange#_addLiquidity: MAX_CURRENCY_AMOUNT_EXCEEDED"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_4d5d44db915b9cc1bc9713a04531b8ab3fff17206fb41c24946b0a410a7be41e",
                                            "typeString": "literal_string \"NiftyswapExchange#_addLiquidity: MAX_CURRENCY_AMOUNT_EXCEEDED\""
                                          }
                                        ],
                                        "id": 700,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "15842:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "15842:107:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 708,
                                    "nodeType": "ExpressionStatement",
                                    "src": "15842:107:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 716,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 709,
                                          "name": "currencyReserves",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 39,
                                          "src": "16029:16:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 711,
                                        "indexExpression": {
                                          "id": 710,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 627,
                                          "src": "16046:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "16029:25:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 714,
                                            "name": "currencyAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 686,
                                            "src": "16077:14:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 712,
                                            "name": "currencyReserve",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 674,
                                            "src": "16057:15:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 713,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7444,
                                          "src": "16057:19:0",
                                          "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": 715,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16057:35:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16029:63:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 717,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16029:63:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 723,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 718,
                                        "name": "totalCurrency",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 574,
                                        "src": "16135:13:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 721,
                                            "name": "currencyAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 686,
                                            "src": "16169:14:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 719,
                                            "name": "totalCurrency",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 574,
                                            "src": "16151:13:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 720,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7444,
                                          "src": "16151:17:0",
                                          "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": 722,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16151:33:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16135:49:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 724,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16135:49:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 741,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 725,
                                          "name": "liquiditiesToMint",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 581,
                                          "src": "16429:17:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 727,
                                        "indexExpression": {
                                          "id": 726,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 617,
                                          "src": "16447:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "16429:20:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 740,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "id": 737,
                                              "name": "totalLiquidity",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 665,
                                              "src": "16494:14:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "components": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "condition": {
                                                        "id": 730,
                                                        "name": "rounded",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 688,
                                                        "src": "16472:7:0",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      },
                                                      "falseExpression": {
                                                        "hexValue": "30",
                                                        "id": 732,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "16486:1:0",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_0_by_1",
                                                          "typeString": "int_const 0"
                                                        },
                                                        "value": "0"
                                                      },
                                                      "id": 733,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "Conditional",
                                                      "src": "16472:15:0",
                                                      "trueExpression": {
                                                        "hexValue": "31",
                                                        "id": 731,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "16482:1:0",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_1_by_1",
                                                          "typeString": "int_const 1"
                                                        },
                                                        "value": "1"
                                                      },
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "id": 728,
                                                      "name": "currencyAmount",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 686,
                                                      "src": "16453:14:0",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 729,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sub",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 7418,
                                                    "src": "16453:18:0",
                                                    "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": 734,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "16453:35:0",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 735,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "16452:37:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 736,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 7366,
                                            "src": "16452:41:0",
                                            "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": 738,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "16452:57:0",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 739,
                                          "name": "currencyReserve",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 674,
                                          "src": "16512:15:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "16452:75:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16429:98:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 742,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16429:98:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 747,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 743,
                                          "name": "currencyAmounts",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 592,
                                          "src": "16537:15:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 745,
                                        "indexExpression": {
                                          "id": 744,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 617,
                                          "src": "16553:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "16537:18:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 746,
                                        "name": "currencyAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 686,
                                        "src": "16558:14:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16537:35:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 748,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16537:35:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 758,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 749,
                                          "name": "totalSupplies",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 35,
                                          "src": "16668:13:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 751,
                                        "indexExpression": {
                                          "id": 750,
                                          "name": "tokenId",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 627,
                                          "src": "16682:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "16668:22:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "baseExpression": {
                                              "id": 754,
                                              "name": "liquiditiesToMint",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 581,
                                              "src": "16712:17:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 756,
                                            "indexExpression": {
                                              "id": 755,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 617,
                                              "src": "16730:1:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "16712:20:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "expression": {
                                            "id": 752,
                                            "name": "totalLiquidity",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 665,
                                            "src": "16693:14:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 753,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "add",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7444,
                                          "src": "16693:18:0",
                                          "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": 757,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "16693:40:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "16668:65:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 759,
                                    "nodeType": "ExpressionStatement",
                                    "src": "16668:65:0"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 620,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 617,
                            "src": "14230:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 621,
                            "name": "nTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 569,
                            "src": "14234:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14230:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 808,
                        "initializationExpression": {
                          "assignments": [
                            617
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 617,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 808,
                              "src": "14215:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 616,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "14215:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 619,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14227:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "14215:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "14243:4:0",
                            "subExpression": {
                              "id": 623,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 617,
                              "src": "14243:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 625,
                          "nodeType": "ExpressionStatement",
                          "src": "14243:4:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "14210:3304:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 810,
                              "name": "_provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 544,
                              "src": "17565:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 811,
                              "name": "_tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 547,
                              "src": "17576:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 812,
                              "name": "liquiditiesToMint",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 581,
                              "src": "17587:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17606:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 809,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5792,
                            "src": "17554:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17554:55:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 815,
                        "nodeType": "ExpressionStatement",
                        "src": "17554:55:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 819,
                              "name": "_provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 544,
                              "src": "17688:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 822,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "17707:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                ],
                                "id": 821,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "17699:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 820,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "17699:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17699:13:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 824,
                              "name": "currencyID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28,
                              "src": "17714:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 825,
                              "name": "totalCurrency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 574,
                              "src": "17726:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 828,
                                  "name": "DEPOSIT_SIG",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1098,
                                  "src": "17752:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                ],
                                "expression": {
                                  "id": 826,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "17741:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "17741:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 829,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17741:23:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 816,
                              "name": "currency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22,
                              "src": "17662:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155_$3875",
                                "typeString": "contract IERC1155"
                              }
                            },
                            "id": 818,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3817,
                            "src": "17662:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                            }
                          },
                          "id": 830,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17662:103:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 831,
                        "nodeType": "ExpressionStatement",
                        "src": "17662:103:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 833,
                              "name": "_provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 544,
                              "src": "17810:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 834,
                              "name": "_tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 547,
                              "src": "17821:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 835,
                              "name": "_tokenAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 550,
                              "src": "17832:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 836,
                              "name": "currencyAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 592,
                              "src": "17847:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 832,
                            "name": "LiquidityAdded",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2067,
                            "src": "17795:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 837,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17795:68:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 838,
                        "nodeType": "EmitStatement",
                        "src": "17790:73:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 542,
                    "nodeType": "StructuredDocumentation",
                    "src": "12295:937:0",
                    "text": " @notice Deposit less than max currency tokens && exact Tokens (token ID) at current ratio to mint liquidity pool tokens.\n @dev min_liquidity does nothing when total liquidity pool token supply is 0.\n @dev Assumes that sender approved this contract on the currency\n @dev Sorting _tokenIds is mandatory for efficient way of preventing duplicated IDs (which would lead to errors)\n @param _provider      Address that provides liquidity to the reserve\n @param _tokenIds      Array of Token IDs where liquidity is added\n @param _tokenAmounts  Array of amount of Tokens deposited corresponding to each ID provided in _tokenIds\n @param _maxCurrency   Array of maximum number of tokens deposited for each ID provided in _tokenIds.\n                       Deposits max amount if total liquidity pool token supply is 0.\n @param _deadline      Timestamp after which this transaction will be reverted"
                  },
                  "id": 840,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [],
                      "id": 558,
                      "modifierName": {
                        "id": 557,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2331,
                        "src": "13421:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "13421:14:0"
                    }
                  ],
                  "name": "_addLiquidity",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 556,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 544,
                        "mutability": "mutable",
                        "name": "_provider",
                        "nodeType": "VariableDeclaration",
                        "scope": 840,
                        "src": "13263:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 543,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13263:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 547,
                        "mutability": "mutable",
                        "name": "_tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 840,
                        "src": "13286:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 545,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "13286:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 546,
                          "nodeType": "ArrayTypeName",
                          "src": "13286:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 550,
                        "mutability": "mutable",
                        "name": "_tokenAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 840,
                        "src": "13318:30:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 548,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "13318:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 549,
                          "nodeType": "ArrayTypeName",
                          "src": "13318:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 553,
                        "mutability": "mutable",
                        "name": "_maxCurrency",
                        "nodeType": "VariableDeclaration",
                        "scope": 840,
                        "src": "13354:29:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 551,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "13354:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 552,
                          "nodeType": "ArrayTypeName",
                          "src": "13354:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 555,
                        "mutability": "mutable",
                        "name": "_deadline",
                        "nodeType": "VariableDeclaration",
                        "scope": 840,
                        "src": "13389:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 554,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "13389:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13257:150:0"
                  },
                  "returnParameters": {
                    "id": 559,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "13438:0:0"
                  },
                  "scope": 1946,
                  "src": "13235:4633:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1082,
                    "nodeType": "Block",
                    "src": "18858:2833:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 866,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 863,
                                "name": "_deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 857,
                                "src": "18896:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "expression": {
                                  "id": 864,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "18908:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 865,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "timestamp",
                                "nodeType": "MemberAccess",
                                "src": "18908:15:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18896:27:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e696674797377617045786368616e6765235f72656d6f76654c69717569646974793a20444541444c494e455f4558434545444544",
                              "id": 867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18925:55:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_69a6ecbdc5691599659ed07adbd82feddd2031cfa74a9799fc308d88a936def0",
                                "typeString": "literal_string \"NiftyswapExchange#_removeLiquidity: DEADLINE_EXCEEDED\""
                              },
                              "value": "NiftyswapExchange#_removeLiquidity: DEADLINE_EXCEEDED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_69a6ecbdc5691599659ed07adbd82feddd2031cfa74a9799fc308d88a936def0",
                                "typeString": "literal_string \"NiftyswapExchange#_removeLiquidity: DEADLINE_EXCEEDED\""
                              }
                            ],
                            "id": 862,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "18888:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 868,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18888:93:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 869,
                        "nodeType": "ExpressionStatement",
                        "src": "18888:93:0"
                      },
                      {
                        "assignments": [
                          871
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 871,
                            "mutability": "mutable",
                            "name": "nTokens",
                            "nodeType": "VariableDeclaration",
                            "scope": 1082,
                            "src": "19016:15:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 870,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19016:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 874,
                        "initialValue": {
                          "expression": {
                            "id": 872,
                            "name": "_tokenIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 846,
                            "src": "19034:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "19034:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19016:34:0"
                      },
                      {
                        "assignments": [
                          876
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 876,
                            "mutability": "mutable",
                            "name": "totalCurrency",
                            "nodeType": "VariableDeclaration",
                            "scope": 1082,
                            "src": "19113:21:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 875,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "19113:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 878,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 877,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "19137:1:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19113:25:0"
                      },
                      {
                        "assignments": [
                          883
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 883,
                            "mutability": "mutable",
                            "name": "tokenAmounts",
                            "nodeType": "VariableDeclaration",
                            "scope": 1082,
                            "src": "19217:29:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 881,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19217:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 882,
                              "nodeType": "ArrayTypeName",
                              "src": "19217:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 889,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 887,
                              "name": "nTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 871,
                              "src": "19263:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "19249:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 884,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19253:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 885,
                              "nodeType": "ArrayTypeName",
                              "src": "19253:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 888,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19249:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19217:54:0"
                      },
                      {
                        "assignments": [
                          894
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 894,
                            "mutability": "mutable",
                            "name": "currencyAmounts",
                            "nodeType": "VariableDeclaration",
                            "scope": 1082,
                            "src": "19324:32:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 892,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19324:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 893,
                              "nodeType": "ArrayTypeName",
                              "src": "19324:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 900,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 898,
                              "name": "nTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 871,
                              "src": "19373:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "19359:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 895,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19363:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 896,
                              "nodeType": "ArrayTypeName",
                              "src": "19363:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19359:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19324:57:0"
                      },
                      {
                        "assignments": [
                          905
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 905,
                            "mutability": "mutable",
                            "name": "tokenReserves",
                            "nodeType": "VariableDeclaration",
                            "scope": 1082,
                            "src": "19433:30:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 903,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19433:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 904,
                              "nodeType": "ArrayTypeName",
                              "src": "19433:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 911,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 909,
                              "name": "nTokens",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 871,
                              "src": "19480:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 908,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "19466:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 906,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19470:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 907,
                              "nodeType": "ArrayTypeName",
                              "src": "19470:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 910,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19466:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19433:55:0"
                      },
                      {
                        "expression": {
                          "id": 916,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 912,
                            "name": "tokenReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 905,
                            "src": "19521:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 914,
                                "name": "_tokenIds",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 846,
                                "src": "19555:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              ],
                              "id": 913,
                              "name": "_getTokenReserves",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1914,
                              "src": "19537:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                "typeString": "function (uint256[] memory) view returns (uint256[] memory)"
                              }
                            },
                            "id": 915,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19537:28:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "src": "19521:44:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "id": 917,
                        "nodeType": "ExpressionStatement",
                        "src": "19521:44:0"
                      },
                      {
                        "body": {
                          "id": 1038,
                          "nodeType": "Block",
                          "src": "19786:1456:0",
                          "statements": [
                            {
                              "assignments": [
                                929
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 929,
                                  "mutability": "mutable",
                                  "name": "id",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1038,
                                  "src": "19852:10:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 928,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "19852:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 933,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 930,
                                  "name": "_tokenIds",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 846,
                                  "src": "19865:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 932,
                                "indexExpression": {
                                  "id": 931,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 919,
                                  "src": "19875:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "19865:12:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "19852:25:0"
                            },
                            {
                              "assignments": [
                                935
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 935,
                                  "mutability": "mutable",
                                  "name": "amountPool",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1038,
                                  "src": "19885:18:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 934,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "19885:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 939,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 936,
                                  "name": "_poolTokenAmounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 849,
                                  "src": "19906:17:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 938,
                                "indexExpression": {
                                  "id": 937,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 919,
                                  "src": "19924:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "19906:20:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "19885:41:0"
                            },
                            {
                              "assignments": [
                                941
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 941,
                                  "mutability": "mutable",
                                  "name": "tokenReserve",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1038,
                                  "src": "19934:20:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 940,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "19934:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 945,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 942,
                                  "name": "tokenReserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 905,
                                  "src": "19957:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 944,
                                "indexExpression": {
                                  "id": 943,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 919,
                                  "src": "19971:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "19957:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "19934:39:0"
                            },
                            {
                              "assignments": [
                                947
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 947,
                                  "mutability": "mutable",
                                  "name": "totalLiquidity",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1038,
                                  "src": "20044:22:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 946,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20044:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 951,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 948,
                                  "name": "totalSupplies",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 35,
                                  "src": "20069:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 950,
                                "indexExpression": {
                                  "id": 949,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 929,
                                  "src": "20083:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20069:17:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20044:42:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 955,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 953,
                                      "name": "totalLiquidity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 947,
                                      "src": "20102:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 954,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20119:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "20102:18:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e696674797377617045786368616e6765235f72656d6f76654c69717569646974793a204e554c4c5f544f54414c5f4c4951554944495459",
                                    "id": 956,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20122:58:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_195a2af155f348fe72edf949630ba8e5fbeb87c9117c53de7afed26bab0ea494",
                                      "typeString": "literal_string \"NiftyswapExchange#_removeLiquidity: NULL_TOTAL_LIQUIDITY\""
                                    },
                                    "value": "NiftyswapExchange#_removeLiquidity: NULL_TOTAL_LIQUIDITY"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_195a2af155f348fe72edf949630ba8e5fbeb87c9117c53de7afed26bab0ea494",
                                      "typeString": "literal_string \"NiftyswapExchange#_removeLiquidity: NULL_TOTAL_LIQUIDITY\""
                                    }
                                  ],
                                  "id": 952,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "20094:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 957,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20094:87:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 958,
                              "nodeType": "ExpressionStatement",
                              "src": "20094:87:0"
                            },
                            {
                              "assignments": [
                                960
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 960,
                                  "mutability": "mutable",
                                  "name": "currencyReserve",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1038,
                                  "src": "20252:23:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 959,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20252:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 964,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 961,
                                  "name": "currencyReserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 39,
                                  "src": "20278:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 963,
                                "indexExpression": {
                                  "id": 962,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 929,
                                  "src": "20295:2:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "20278:20:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20252:46:0"
                            },
                            {
                              "assignments": [
                                966
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 966,
                                  "mutability": "mutable",
                                  "name": "currencyAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1038,
                                  "src": "20373:22:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 965,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20373:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 973,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 969,
                                      "name": "currencyReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 960,
                                      "src": "20413:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 967,
                                      "name": "amountPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 935,
                                      "src": "20398:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 968,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7366,
                                    "src": "20398:14:0",
                                    "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": 970,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20398:31:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 971,
                                  "name": "totalLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 947,
                                  "src": "20432:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20398:48:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20373:73:0"
                            },
                            {
                              "assignments": [
                                975
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 975,
                                  "mutability": "mutable",
                                  "name": "tokenAmount",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1038,
                                  "src": "20454:19:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 974,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20454:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 982,
                              "initialValue": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "id": 978,
                                      "name": "tokenReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 941,
                                      "src": "20491:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 976,
                                      "name": "amountPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 935,
                                      "src": "20476:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 977,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7366,
                                    "src": "20476:14:0",
                                    "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": 979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20476:28:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 980,
                                  "name": "totalLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 947,
                                  "src": "20507:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20476:45:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "20454:67:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 988,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 984,
                                      "name": "currencyAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 966,
                                      "src": "20604:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "baseExpression": {
                                        "id": 985,
                                        "name": "_minCurrency",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 852,
                                        "src": "20622:12:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 987,
                                      "indexExpression": {
                                        "id": 986,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 919,
                                        "src": "20635:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "20622:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "20604:33:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e696674797377617045786368616e6765235f72656d6f76654c69717569646974793a20494e53554646494349454e545f43555252454e43595f414d4f554e54",
                                    "id": 989,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20639:66:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_896491f9e217e649d0415c8c902ac15dc925ae7c61df3f0e9f5a5c1433be452a",
                                      "typeString": "literal_string \"NiftyswapExchange#_removeLiquidity: INSUFFICIENT_CURRENCY_AMOUNT\""
                                    },
                                    "value": "NiftyswapExchange#_removeLiquidity: INSUFFICIENT_CURRENCY_AMOUNT"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_896491f9e217e649d0415c8c902ac15dc925ae7c61df3f0e9f5a5c1433be452a",
                                      "typeString": "literal_string \"NiftyswapExchange#_removeLiquidity: INSUFFICIENT_CURRENCY_AMOUNT\""
                                    }
                                  ],
                                  "id": 983,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "20596:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 990,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20596:110:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 991,
                              "nodeType": "ExpressionStatement",
                              "src": "20596:110:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 997,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 993,
                                      "name": "tokenAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 975,
                                      "src": "20722:11:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "baseExpression": {
                                        "id": 994,
                                        "name": "_minTokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 855,
                                        "src": "20737:10:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 996,
                                      "indexExpression": {
                                        "id": 995,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 919,
                                        "src": "20748:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "20737:13:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "20722:28:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e696674797377617045786368616e6765235f72656d6f76654c69717569646974793a20494e53554646494349454e545f544f4b454e53",
                                    "id": 998,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "20752:57:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_9432b32fedb5b8d42791a800b82fe98da48f6fa0407e83fd99c793fc220f1e23",
                                      "typeString": "literal_string \"NiftyswapExchange#_removeLiquidity: INSUFFICIENT_TOKENS\""
                                    },
                                    "value": "NiftyswapExchange#_removeLiquidity: INSUFFICIENT_TOKENS"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_9432b32fedb5b8d42791a800b82fe98da48f6fa0407e83fd99c793fc220f1e23",
                                      "typeString": "literal_string \"NiftyswapExchange#_removeLiquidity: INSUFFICIENT_TOKENS\""
                                    }
                                  ],
                                  "id": 992,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "20714:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 999,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20714:96:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1000,
                              "nodeType": "ExpressionStatement",
                              "src": "20714:96:0"
                            },
                            {
                              "expression": {
                                "id": 1008,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1001,
                                    "name": "totalSupplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35,
                                    "src": "20882:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1003,
                                  "indexExpression": {
                                    "id": 1002,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 929,
                                    "src": "20896:2:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "20882:17:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 1006,
                                      "name": "amountPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 935,
                                      "src": "20921:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 1004,
                                      "name": "totalLiquidity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 947,
                                      "src": "20902:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1005,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7418,
                                    "src": "20902:18:0",
                                    "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": 1007,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "20902:30:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20882:50:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1009,
                              "nodeType": "ExpressionStatement",
                              "src": "20882:50:0"
                            },
                            {
                              "expression": {
                                "id": 1017,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1010,
                                    "name": "currencyReserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39,
                                    "src": "20992:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1012,
                                  "indexExpression": {
                                    "id": 1011,
                                    "name": "id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 929,
                                    "src": "21009:2:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "20992:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 1015,
                                      "name": "currencyAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 966,
                                      "src": "21035:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 1013,
                                      "name": "currencyReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 960,
                                      "src": "21015:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1014,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7418,
                                    "src": "21015:19:0",
                                    "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": 1016,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21015:35:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20992:58:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1018,
                              "nodeType": "ExpressionStatement",
                              "src": "20992:58:0"
                            },
                            {
                              "expression": {
                                "id": 1024,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 1019,
                                  "name": "totalCurrency",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 876,
                                  "src": "21106:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 1022,
                                      "name": "currencyAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 966,
                                      "src": "21140:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 1020,
                                      "name": "totalCurrency",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 876,
                                      "src": "21122:13:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1021,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7444,
                                    "src": "21122:17:0",
                                    "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": 1023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "21122:33:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21106:49:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1025,
                              "nodeType": "ExpressionStatement",
                              "src": "21106:49:0"
                            },
                            {
                              "expression": {
                                "id": 1030,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1026,
                                    "name": "tokenAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 883,
                                    "src": "21163:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1028,
                                  "indexExpression": {
                                    "id": 1027,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 919,
                                    "src": "21176:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "21163:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 1029,
                                  "name": "tokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 975,
                                  "src": "21181:11:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21163:29:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1031,
                              "nodeType": "ExpressionStatement",
                              "src": "21163:29:0"
                            },
                            {
                              "expression": {
                                "id": 1036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1032,
                                    "name": "currencyAmounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 894,
                                    "src": "21200:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1034,
                                  "indexExpression": {
                                    "id": 1033,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 919,
                                    "src": "21216:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "21200:18:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 1035,
                                  "name": "currencyAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 966,
                                  "src": "21221:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "21200:35:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1037,
                              "nodeType": "ExpressionStatement",
                              "src": "21200:35:0"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 924,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 922,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 919,
                            "src": "19768:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 923,
                            "name": "nTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 871,
                            "src": "19772:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "19768:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1039,
                        "initializationExpression": {
                          "assignments": [
                            919
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 919,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1039,
                              "src": "19753:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 918,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "19753:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 921,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19765:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "19753:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 926,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "19781:3:0",
                            "subExpression": {
                              "id": 925,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 919,
                              "src": "19781:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 927,
                          "nodeType": "ExpressionStatement",
                          "src": "19781:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "19748:1494:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1043,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "21323:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                ],
                                "id": 1042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21315:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1041,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21315:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21315:13:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1045,
                              "name": "_tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 846,
                              "src": "21330:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1046,
                              "name": "_poolTokenAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 849,
                              "src": "21341:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 1040,
                            "name": "_batchBurn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5901,
                            "src": "21304:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 1047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21304:55:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1048,
                        "nodeType": "ExpressionStatement",
                        "src": "21304:55:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1054,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "21451:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                ],
                                "id": 1053,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21443:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1052,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21443:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1055,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21443:13:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1056,
                              "name": "_provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 843,
                              "src": "21458:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1057,
                              "name": "currencyID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28,
                              "src": "21469:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 1058,
                              "name": "totalCurrency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 876,
                              "src": "21481:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 1059,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21496:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "id": 1049,
                              "name": "currency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22,
                              "src": "21417:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155_$3875",
                                "typeString": "contract IERC1155"
                              }
                            },
                            "id": 1051,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3817,
                            "src": "21417:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                            }
                          },
                          "id": 1060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21417:82:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1061,
                        "nodeType": "ExpressionStatement",
                        "src": "21417:82:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 1067,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "21541:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                ],
                                "id": 1066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "21533:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1065,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "21533:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1068,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "21533:13:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1069,
                              "name": "_provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 843,
                              "src": "21548:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1070,
                              "name": "_tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 846,
                              "src": "21559:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1071,
                              "name": "tokenAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 883,
                              "src": "21570:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 1072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "21584:2:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "id": 1062,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20,
                              "src": "21505:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155_$3875",
                                "typeString": "contract IERC1155"
                              }
                            },
                            "id": 1064,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeBatchTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3833,
                            "src": "21505:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external"
                            }
                          },
                          "id": 1073,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21505:82:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1074,
                        "nodeType": "ExpressionStatement",
                        "src": "21505:82:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1076,
                              "name": "_provider",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 843,
                              "src": "21634:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1077,
                              "name": "_tokenIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 846,
                              "src": "21645:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1078,
                              "name": "tokenAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 883,
                              "src": "21656:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 1079,
                              "name": "currencyAmounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 894,
                              "src": "21670:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 1075,
                            "name": "LiquidityRemoved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2080,
                            "src": "21617:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 1080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21617:69:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1081,
                        "nodeType": "EmitStatement",
                        "src": "21612:74:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 841,
                    "nodeType": "StructuredDocumentation",
                    "src": "17872:740:0",
                    "text": " @dev Burn liquidity pool tokens to withdraw currency  && Tokens at current ratio.\n @dev Sorting _tokenIds is mandatory for efficient way of preventing duplicated IDs (which would lead to errors)\n @param _provider         Address that removes liquidity to the reserve\n @param _tokenIds         Array of Token IDs where liquidity is removed\n @param _poolTokenAmounts Array of Amount of liquidity pool tokens burned for each Token id in _tokenIds.\n @param _minCurrency      Minimum currency withdrawn for each Token id in _tokenIds.\n @param _minTokens        Minimum Tokens id withdrawn for each Token id in _tokenIds.\n @param _deadline         Timestamp after which this transaction will be reverted"
                  },
                  "id": 1083,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [
                    {
                      "arguments": [],
                      "id": 860,
                      "modifierName": {
                        "id": 859,
                        "name": "nonReentrant",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2331,
                        "src": "18841:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_modifier$__$",
                          "typeString": "modifier ()"
                        }
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "18841:14:0"
                    }
                  ],
                  "name": "_removeLiquidity",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 858,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 843,
                        "mutability": "mutable",
                        "name": "_provider",
                        "nodeType": "VariableDeclaration",
                        "scope": 1083,
                        "src": "18646:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 842,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18646:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 846,
                        "mutability": "mutable",
                        "name": "_tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 1083,
                        "src": "18669:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 844,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "18669:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 845,
                          "nodeType": "ArrayTypeName",
                          "src": "18669:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 849,
                        "mutability": "mutable",
                        "name": "_poolTokenAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 1083,
                        "src": "18701:34:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 847,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "18701:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 848,
                          "nodeType": "ArrayTypeName",
                          "src": "18701:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 852,
                        "mutability": "mutable",
                        "name": "_minCurrency",
                        "nodeType": "VariableDeclaration",
                        "scope": 1083,
                        "src": "18741:29:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 850,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "18741:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 851,
                          "nodeType": "ArrayTypeName",
                          "src": "18741:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 855,
                        "mutability": "mutable",
                        "name": "_minTokens",
                        "nodeType": "VariableDeclaration",
                        "scope": 1083,
                        "src": "18776:27:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 853,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "18776:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 854,
                          "nodeType": "ArrayTypeName",
                          "src": "18776:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 857,
                        "mutability": "mutable",
                        "name": "_deadline",
                        "nodeType": "VariableDeclaration",
                        "scope": 1083,
                        "src": "18809:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 856,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "18809:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18640:187:0"
                  },
                  "returnParameters": {
                    "id": 861,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18858:0:0"
                  },
                  "scope": 1946,
                  "src": "18615:3076:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 1086,
                  "mutability": "constant",
                  "name": "BUYTOKENS_SIG",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "21971:51:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1084,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "21971:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786232643831303437",
                    "id": 1085,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "22012:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3000504391_by_1",
                      "typeString": "int_const 3000504391"
                    },
                    "value": "0xb2d81047"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 1089,
                  "mutability": "constant",
                  "name": "SELLTOKENS_SIG",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "22130:52:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1087,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "22130:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786462303865633937",
                    "id": 1088,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "22172:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3674795159_by_1",
                      "typeString": "int_const 3674795159"
                    },
                    "value": "0xdb08ec97"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 1092,
                  "mutability": "constant",
                  "name": "ADDLIQUIDITY_SIG",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "22290:54:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1090,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "22290:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30783832646132623733",
                    "id": 1091,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "22334:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2195336051_by_1",
                      "typeString": "int_const 2195336051"
                    },
                    "value": "0x82da2b73"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 1095,
                  "mutability": "constant",
                  "name": "REMOVELIQUIDITY_SIG",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "22465:57:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1093,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "22465:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30783563306266323539",
                    "id": 1094,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "22512:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1544286809_by_1",
                      "typeString": "int_const 1544286809"
                    },
                    "value": "0x5c0bf259"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 1098,
                  "mutability": "constant",
                  "name": "DEPOSIT_SIG",
                  "nodeType": "VariableDeclaration",
                  "scope": 1946,
                  "src": "22584:49:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 1096,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "22584:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786338633332336639",
                    "id": 1097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "22623:10:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3368231929_by_1",
                      "typeString": "int_const 3368231929"
                    },
                    "value": "0xc8c323f9"
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    2147
                  ],
                  "body": {
                    "id": 1401,
                    "nodeType": "Block",
                    "src": "23574:4256:0",
                    "statements": [
                      {
                        "assignments": [
                          1118
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1118,
                            "mutability": "mutable",
                            "name": "functionSignature",
                            "nodeType": "VariableDeclaration",
                            "scope": 1401,
                            "src": "23896:24:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 1117,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "23896:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1126,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1121,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1111,
                              "src": "23934:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "components": [
                                {
                                  "id": 1123,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "23942:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes4_$",
                                    "typeString": "type(bytes4)"
                                  },
                                  "typeName": {
                                    "id": 1122,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23942:6:0",
                                    "typeDescriptions": {}
                                  }
                                }
                              ],
                              "id": 1124,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "23941:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes4_$",
                                "typeString": "type(bytes4)"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_type$_t_bytes4_$",
                                "typeString": "type(bytes4)"
                              }
                            ],
                            "expression": {
                              "id": 1119,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "23923:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 1120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "decode",
                            "nodeType": "MemberAccess",
                            "src": "23923:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 1125,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "23923:27:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "23896:54:0"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 1129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1127,
                            "name": "functionSignature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1118,
                            "src": "24088:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 1128,
                            "name": "BUYTOKENS_SIG",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1086,
                            "src": "24109:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "24088:34:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 1218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1216,
                              "name": "functionSignature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1118,
                              "src": "25200:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 1217,
                              "name": "SELLTOKENS_SIG",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1089,
                              "src": "25221:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "25200:35:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1283,
                                "name": "functionSignature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1118,
                                "src": "26053:17:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 1284,
                                "name": "ADDLIQUIDITY_SIG",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1092,
                                "src": "26074:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "26053:37:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                "id": 1325,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1323,
                                  "name": "functionSignature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1118,
                                  "src": "26661:17:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 1324,
                                  "name": "REMOVELIQUIDITY_SIG",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1095,
                                  "src": "26682:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                "src": "26661:40:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "id": 1367,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 1365,
                                    "name": "functionSignature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1118,
                                    "src": "27293:17:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "id": 1366,
                                    "name": "DEPOSIT_SIG",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1098,
                                    "src": "27314:11:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "src": "27293:32:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "id": 1393,
                                  "nodeType": "Block",
                                  "src": "27703:81:0",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "hexValue": "4e696674797377617045786368616e6765236f6e45524331313535426174636852656365697665643a20494e56414c49445f4d4554484f44",
                                            "id": 1390,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "27718:58:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_b656c14e87a7867ddeb6b0421544be2dee3e55aa8c5dce8041e99478392eba82",
                                              "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_METHOD\""
                                            },
                                            "value": "NiftyswapExchange#onERC1155BatchReceived: INVALID_METHOD"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_stringliteral_b656c14e87a7867ddeb6b0421544be2dee3e55aa8c5dce8041e99478392eba82",
                                              "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_METHOD\""
                                            }
                                          ],
                                          "id": 1389,
                                          "name": "revert",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -19,
                                            -19
                                          ],
                                          "referencedDeclaration": -19,
                                          "src": "27711:6:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (string memory) pure"
                                          }
                                        },
                                        "id": 1391,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "27711:66:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 1392,
                                      "nodeType": "ExpressionStatement",
                                      "src": "27711:66:0"
                                    }
                                  ]
                                },
                                "id": 1394,
                                "nodeType": "IfStatement",
                                "src": "27289:495:0",
                                "trueBody": {
                                  "id": 1388,
                                  "nodeType": "Block",
                                  "src": "27327:370:0",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            "id": 1375,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "expression": {
                                                "id": 1369,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "27484:3:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 1370,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "src": "27484:10:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "arguments": [
                                                {
                                                  "id": 1373,
                                                  "name": "currency",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 22,
                                                  "src": "27506:8:0",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IERC1155_$3875",
                                                    "typeString": "contract IERC1155"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_contract$_IERC1155_$3875",
                                                    "typeString": "contract IERC1155"
                                                  }
                                                ],
                                                "id": 1372,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "27498:7:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_address_$",
                                                  "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                  "id": 1371,
                                                  "name": "address",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "27498:7:0",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 1374,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "27498:17:0",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "src": "27484:31:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "hexValue": "4e696674797377617045786368616e6765236f6e45524331313535426174636852656365697665643a20494e56414c49445f544f4b454e535f4445504f5349544544",
                                            "id": 1376,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "27517:68:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_2c5b1b963fa773f5eb1d14179a97f8148e38211d9fa2234f9e25fd8e59ee057f",
                                              "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKENS_DEPOSITED\""
                                            },
                                            "value": "NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKENS_DEPOSITED"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_stringliteral_2c5b1b963fa773f5eb1d14179a97f8148e38211d9fa2234f9e25fd8e59ee057f",
                                              "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKENS_DEPOSITED\""
                                            }
                                          ],
                                          "id": 1368,
                                          "name": "require",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -18,
                                            -18
                                          ],
                                          "referencedDeclaration": -18,
                                          "src": "27476:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (bool,string memory) pure"
                                          }
                                        },
                                        "id": 1377,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "27476:110:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 1378,
                                      "nodeType": "ExpressionStatement",
                                      "src": "27476:110:0"
                                    },
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 1384,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "baseExpression": {
                                                "id": 1380,
                                                "name": "_ids",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1106,
                                                "src": "27602:4:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                }
                                              },
                                              "id": 1382,
                                              "indexExpression": {
                                                "hexValue": "30",
                                                "id": 1381,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "27607:1:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_0_by_1",
                                                  "typeString": "int_const 0"
                                                },
                                                "value": "0"
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "27602:7:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "id": 1383,
                                              "name": "currencyID",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 28,
                                              "src": "27613:10:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "27602:21:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          {
                                            "hexValue": "4e696674797377617045786368616e6765236f6e45524331313535426174636852656365697665643a20494e56414c49445f43555252454e43595f4944",
                                            "id": 1385,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "string",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "27625:63:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_stringliteral_19ed05f570a53a98eb1a84996f9124ea7a046c8913e9b15245b8e38dda123e3b",
                                              "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_ID\""
                                            },
                                            "value": "NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_ID"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_stringliteral_19ed05f570a53a98eb1a84996f9124ea7a046c8913e9b15245b8e38dda123e3b",
                                              "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_ID\""
                                            }
                                          ],
                                          "id": 1379,
                                          "name": "require",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [
                                            -18,
                                            -18
                                          ],
                                          "referencedDeclaration": -18,
                                          "src": "27594:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                            "typeString": "function (bool,string memory) pure"
                                          }
                                        },
                                        "id": 1386,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "27594:95:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 1387,
                                      "nodeType": "ExpressionStatement",
                                      "src": "27594:95:0"
                                    }
                                  ]
                                }
                              },
                              "id": 1395,
                              "nodeType": "IfStatement",
                              "src": "26657:1127:0",
                              "trueBody": {
                                "id": 1364,
                                "nodeType": "Block",
                                "src": "26703:580:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "id": 1333,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 1327,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -15,
                                              "src": "26773:3:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 1328,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "26773:10:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "id": 1331,
                                                "name": "this",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -28,
                                                "src": "26795:4:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                                  "typeString": "contract NiftyswapExchange"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                                  "typeString": "contract NiftyswapExchange"
                                                }
                                              ],
                                              "id": 1330,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "26787:7:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 1329,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "26787:7:0",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 1332,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "26787:13:0",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "src": "26773:27:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "4e696674797377617045786368616e6765236f6e45524331313535426174636852656365697665643a20494e56414c49445f4e494654595f544f4b454e535f5452414e53464552524544",
                                          "id": 1334,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "26802:76:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_50a674e1ca705baa08d06baf97a65a6e4f207105f4d4e98933522d69491be95a",
                                            "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_NIFTY_TOKENS_TRANSFERRED\""
                                          },
                                          "value": "NiftyswapExchange#onERC1155BatchReceived: INVALID_NIFTY_TOKENS_TRANSFERRED"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_50a674e1ca705baa08d06baf97a65a6e4f207105f4d4e98933522d69491be95a",
                                            "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_NIFTY_TOKENS_TRANSFERRED\""
                                          }
                                        ],
                                        "id": 1326,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "26765:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 1335,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26765:114:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1336,
                                    "nodeType": "ExpressionStatement",
                                    "src": "26765:114:0"
                                  },
                                  {
                                    "assignments": [
                                      1338
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 1338,
                                        "mutability": "mutable",
                                        "name": "obj",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 1364,
                                        "src": "26961:29:0",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_RemoveLiquidityObj_$2113_memory_ptr",
                                          "typeString": "struct INiftyswapExchange.RemoveLiquidityObj"
                                        },
                                        "typeName": {
                                          "id": 1337,
                                          "name": "RemoveLiquidityObj",
                                          "nodeType": "UserDefinedTypeName",
                                          "referencedDeclaration": 2113,
                                          "src": "26961:18:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_RemoveLiquidityObj_$2113_storage_ptr",
                                            "typeString": "struct INiftyswapExchange.RemoveLiquidityObj"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 1339,
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "26961:29:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 1350,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "components": [
                                          null,
                                          {
                                            "id": 1340,
                                            "name": "obj",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1338,
                                            "src": "27001:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RemoveLiquidityObj_$2113_memory_ptr",
                                              "typeString": "struct INiftyswapExchange.RemoveLiquidityObj memory"
                                            }
                                          }
                                        ],
                                        "id": 1341,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "26998:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$_t_struct$_RemoveLiquidityObj_$2113_memory_ptr_$",
                                          "typeString": "tuple(,struct INiftyswapExchange.RemoveLiquidityObj memory)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 1344,
                                            "name": "_data",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1111,
                                            "src": "27019:5:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          {
                                            "components": [
                                              {
                                                "id": 1346,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "27027:6:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_bytes4_$",
                                                  "typeString": "type(bytes4)"
                                                },
                                                "typeName": {
                                                  "id": 1345,
                                                  "name": "bytes4",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "27027:6:0",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              {
                                                "id": 1347,
                                                "name": "RemoveLiquidityObj",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2113,
                                                "src": "27035:18:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_struct$_RemoveLiquidityObj_$2113_storage_ptr_$",
                                                  "typeString": "type(struct INiftyswapExchange.RemoveLiquidityObj storage pointer)"
                                                }
                                              }
                                            ],
                                            "id": 1348,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "27026:28:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_RemoveLiquidityObj_$2113_storage_ptr_$_$",
                                              "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.RemoveLiquidityObj storage pointer))"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            },
                                            {
                                              "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_RemoveLiquidityObj_$2113_storage_ptr_$_$",
                                              "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.RemoveLiquidityObj storage pointer))"
                                            }
                                          ],
                                          "expression": {
                                            "id": 1342,
                                            "name": "abi",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -1,
                                            "src": "27008:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_abi",
                                              "typeString": "abi"
                                            }
                                          },
                                          "id": 1343,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "memberName": "decode",
                                          "nodeType": "MemberAccess",
                                          "src": "27008:10:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 1349,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "27008:47:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_bytes4_$_t_struct$_RemoveLiquidityObj_$2113_memory_ptr_$",
                                          "typeString": "tuple(bytes4,struct INiftyswapExchange.RemoveLiquidityObj memory)"
                                        }
                                      },
                                      "src": "26998:57:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1351,
                                    "nodeType": "ExpressionStatement",
                                    "src": "26998:57:0"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 1353,
                                          "name": "_from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1103,
                                          "src": "27080:5:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 1354,
                                          "name": "_ids",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1106,
                                          "src": "27087:4:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        {
                                          "id": 1355,
                                          "name": "_amounts",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1109,
                                          "src": "27093:8:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 1356,
                                            "name": "obj",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1338,
                                            "src": "27103:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RemoveLiquidityObj_$2113_memory_ptr",
                                              "typeString": "struct INiftyswapExchange.RemoveLiquidityObj memory"
                                            }
                                          },
                                          "id": 1357,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "minCurrency",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2107,
                                          "src": "27103:15:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 1358,
                                            "name": "obj",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1338,
                                            "src": "27120:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RemoveLiquidityObj_$2113_memory_ptr",
                                              "typeString": "struct INiftyswapExchange.RemoveLiquidityObj memory"
                                            }
                                          },
                                          "id": 1359,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "minTokens",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2110,
                                          "src": "27120:13:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 1360,
                                            "name": "obj",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1338,
                                            "src": "27135:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_RemoveLiquidityObj_$2113_memory_ptr",
                                              "typeString": "struct INiftyswapExchange.RemoveLiquidityObj memory"
                                            }
                                          },
                                          "id": 1361,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "deadline",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 2112,
                                          "src": "27135:12:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          },
                                          {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          },
                                          {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          },
                                          {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 1352,
                                        "name": "_removeLiquidity",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1083,
                                        "src": "27063:16:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256[] memory,uint256[] memory,uint256[] memory,uint256[] memory,uint256)"
                                        }
                                      },
                                      "id": 1362,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "27063:85:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1363,
                                    "nodeType": "ExpressionStatement",
                                    "src": "27063:85:0"
                                  }
                                ]
                              }
                            },
                            "id": 1396,
                            "nodeType": "IfStatement",
                            "src": "26049:1735:0",
                            "trueBody": {
                              "id": 1322,
                              "nodeType": "Block",
                              "src": "26092:559:0",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "id": 1293,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 1287,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "26177:3:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 1288,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "26177:10:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "id": 1291,
                                              "name": "token",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 20,
                                              "src": "26199:5:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC1155_$3875",
                                                "typeString": "contract IERC1155"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_IERC1155_$3875",
                                                "typeString": "contract IERC1155"
                                              }
                                            ],
                                            "id": 1290,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "26191:7:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 1289,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "26191:7:0",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 1292,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "26191:14:0",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "src": "26177:28:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "4e696674797377617045786368616e6765236f6e45524331313535426174636852656365697665643a20494e56414c49445f544f4b454e5f5452414e53464552524544",
                                        "id": 1294,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "26207:69:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_1ed07bc7650042c2e2cbca09ab67f62eeee0338ec4d76866c3c7841a8ba4c925",
                                          "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKEN_TRANSFERRED\""
                                        },
                                        "value": "NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKEN_TRANSFERRED"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_1ed07bc7650042c2e2cbca09ab67f62eeee0338ec4d76866c3c7841a8ba4c925",
                                          "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKEN_TRANSFERRED\""
                                        }
                                      ],
                                      "id": 1286,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "26169:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 1295,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "26169:108:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 1296,
                                  "nodeType": "ExpressionStatement",
                                  "src": "26169:108:0"
                                },
                                {
                                  "assignments": [
                                    1298
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 1298,
                                      "mutability": "mutable",
                                      "name": "obj",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 1322,
                                      "src": "26353:26:0",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AddLiquidityObj_$2104_memory_ptr",
                                        "typeString": "struct INiftyswapExchange.AddLiquidityObj"
                                      },
                                      "typeName": {
                                        "id": 1297,
                                        "name": "AddLiquidityObj",
                                        "nodeType": "UserDefinedTypeName",
                                        "referencedDeclaration": 2104,
                                        "src": "26353:15:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AddLiquidityObj_$2104_storage_ptr",
                                          "typeString": "struct INiftyswapExchange.AddLiquidityObj"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 1299,
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "26353:26:0"
                                },
                                {
                                  "expression": {
                                    "id": 1310,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "components": [
                                        null,
                                        {
                                          "id": 1300,
                                          "name": "obj",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1298,
                                          "src": "26390:3:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AddLiquidityObj_$2104_memory_ptr",
                                            "typeString": "struct INiftyswapExchange.AddLiquidityObj memory"
                                          }
                                        }
                                      ],
                                      "id": 1301,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "26387:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$_t_struct$_AddLiquidityObj_$2104_memory_ptr_$",
                                        "typeString": "tuple(,struct INiftyswapExchange.AddLiquidityObj memory)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 1304,
                                          "name": "_data",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1111,
                                          "src": "26408:5:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        {
                                          "components": [
                                            {
                                              "id": 1306,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "26416:6:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_bytes4_$",
                                                "typeString": "type(bytes4)"
                                              },
                                              "typeName": {
                                                "id": 1305,
                                                "name": "bytes4",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "26416:6:0",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            {
                                              "id": 1307,
                                              "name": "AddLiquidityObj",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2104,
                                              "src": "26424:15:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_struct$_AddLiquidityObj_$2104_storage_ptr_$",
                                                "typeString": "type(struct INiftyswapExchange.AddLiquidityObj storage pointer)"
                                              }
                                            }
                                          ],
                                          "id": 1308,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "26415:25:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_AddLiquidityObj_$2104_storage_ptr_$_$",
                                            "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.AddLiquidityObj storage pointer))"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          },
                                          {
                                            "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_AddLiquidityObj_$2104_storage_ptr_$_$",
                                            "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.AddLiquidityObj storage pointer))"
                                          }
                                        ],
                                        "expression": {
                                          "id": 1302,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "26397:3:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 1303,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "decode",
                                        "nodeType": "MemberAccess",
                                        "src": "26397:10:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 1309,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "26397:44:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_bytes4_$_t_struct$_AddLiquidityObj_$2104_memory_ptr_$",
                                        "typeString": "tuple(bytes4,struct INiftyswapExchange.AddLiquidityObj memory)"
                                      }
                                    },
                                    "src": "26387:54:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 1311,
                                  "nodeType": "ExpressionStatement",
                                  "src": "26387:54:0"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 1313,
                                        "name": "_from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1103,
                                        "src": "26463:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 1314,
                                        "name": "_ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1106,
                                        "src": "26470:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      {
                                        "id": 1315,
                                        "name": "_amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1109,
                                        "src": "26476:8:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 1316,
                                          "name": "obj",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1298,
                                          "src": "26486:3:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AddLiquidityObj_$2104_memory_ptr",
                                            "typeString": "struct INiftyswapExchange.AddLiquidityObj memory"
                                          }
                                        },
                                        "id": 1317,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "maxCurrency",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2101,
                                        "src": "26486:15:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 1318,
                                          "name": "obj",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1298,
                                          "src": "26503:3:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AddLiquidityObj_$2104_memory_ptr",
                                            "typeString": "struct INiftyswapExchange.AddLiquidityObj memory"
                                          }
                                        },
                                        "id": 1319,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "deadline",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 2103,
                                        "src": "26503:12:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 1312,
                                      "name": "_addLiquidity",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 840,
                                      "src": "26449:13:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,uint256[] memory,uint256[] memory,uint256[] memory,uint256)"
                                      }
                                    },
                                    "id": 1320,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "26449:67:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 1321,
                                  "nodeType": "ExpressionStatement",
                                  "src": "26449:67:0"
                                }
                              ]
                            }
                          },
                          "id": 1397,
                          "nodeType": "IfStatement",
                          "src": "25196:2588:0",
                          "trueBody": {
                            "id": 1282,
                            "nodeType": "Block",
                            "src": "25237:806:0",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 1226,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 1220,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "25305:3:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 1221,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "25305:10:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "arguments": [
                                          {
                                            "id": 1224,
                                            "name": "token",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 20,
                                            "src": "25327:5:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC1155_$3875",
                                              "typeString": "contract IERC1155"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_IERC1155_$3875",
                                              "typeString": "contract IERC1155"
                                            }
                                          ],
                                          "id": 1223,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "25319:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 1222,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "25319:7:0",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 1225,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "25319:14:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "25305:28:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "4e696674797377617045786368616e6765236f6e45524331313535426174636852656365697665643a20494e56414c49445f544f4b454e535f5452414e53464552524544",
                                      "id": 1227,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "25335:70:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_437272d75d3565950010088748c6e6dcfafd69a3d8caafcc6fa62779aab93510",
                                        "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKENS_TRANSFERRED\""
                                      },
                                      "value": "NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKENS_TRANSFERRED"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_437272d75d3565950010088748c6e6dcfafd69a3d8caafcc6fa62779aab93510",
                                        "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_TOKENS_TRANSFERRED\""
                                      }
                                    ],
                                    "id": 1219,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -18,
                                      -18
                                    ],
                                    "referencedDeclaration": -18,
                                    "src": "25297:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 1228,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25297:109:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1229,
                                "nodeType": "ExpressionStatement",
                                "src": "25297:109:0"
                              },
                              {
                                "assignments": [
                                  1231
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 1231,
                                    "mutability": "mutable",
                                    "name": "obj",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1282,
                                    "src": "25483:24:0",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SellTokensObj_$2098_memory_ptr",
                                      "typeString": "struct INiftyswapExchange.SellTokensObj"
                                    },
                                    "typeName": {
                                      "id": 1230,
                                      "name": "SellTokensObj",
                                      "nodeType": "UserDefinedTypeName",
                                      "referencedDeclaration": 2098,
                                      "src": "25483:13:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SellTokensObj_$2098_storage_ptr",
                                        "typeString": "struct INiftyswapExchange.SellTokensObj"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 1232,
                                "nodeType": "VariableDeclarationStatement",
                                "src": "25483:24:0"
                              },
                              {
                                "expression": {
                                  "id": 1243,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "components": [
                                      null,
                                      {
                                        "id": 1233,
                                        "name": "obj",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1231,
                                        "src": "25518:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SellTokensObj_$2098_memory_ptr",
                                          "typeString": "struct INiftyswapExchange.SellTokensObj memory"
                                        }
                                      }
                                    ],
                                    "id": 1234,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "nodeType": "TupleExpression",
                                    "src": "25515:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$_t_struct$_SellTokensObj_$2098_memory_ptr_$",
                                      "typeString": "tuple(,struct INiftyswapExchange.SellTokensObj memory)"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "id": 1237,
                                        "name": "_data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1111,
                                        "src": "25536:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "components": [
                                          {
                                            "id": 1239,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "25544:6:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bytes4_$",
                                              "typeString": "type(bytes4)"
                                            },
                                            "typeName": {
                                              "id": 1238,
                                              "name": "bytes4",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "25544:6:0",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          {
                                            "id": 1240,
                                            "name": "SellTokensObj",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2098,
                                            "src": "25552:13:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_struct$_SellTokensObj_$2098_storage_ptr_$",
                                              "typeString": "type(struct INiftyswapExchange.SellTokensObj storage pointer)"
                                            }
                                          }
                                        ],
                                        "id": 1241,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "25543:23:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_SellTokensObj_$2098_storage_ptr_$_$",
                                          "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.SellTokensObj storage pointer))"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_SellTokensObj_$2098_storage_ptr_$_$",
                                          "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.SellTokensObj storage pointer))"
                                        }
                                      ],
                                      "expression": {
                                        "id": 1235,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "25525:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 1236,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "src": "25525:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1242,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "25525:42:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_bytes4_$_t_struct$_SellTokensObj_$2098_memory_ptr_$",
                                      "typeString": "tuple(bytes4,struct INiftyswapExchange.SellTokensObj memory)"
                                    }
                                  },
                                  "src": "25515:52:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1244,
                                "nodeType": "ExpressionStatement",
                                "src": "25515:52:0"
                              },
                              {
                                "assignments": [
                                  1246
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 1246,
                                    "mutability": "mutable",
                                    "name": "recipient",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1282,
                                    "src": "25575:17:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "typeName": {
                                      "id": 1245,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "25575:7:0",
                                      "stateMutability": "nonpayable",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 1258,
                                "initialValue": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 1253,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 1247,
                                        "name": "obj",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1231,
                                        "src": "25595:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SellTokensObj_$2098_memory_ptr",
                                          "typeString": "struct INiftyswapExchange.SellTokensObj memory"
                                        }
                                      },
                                      "id": 1248,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "recipient",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2093,
                                      "src": "25595:13:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "307830",
                                          "id": 1251,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "25620:3:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0x0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 1250,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "25612:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 1249,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "25612:7:0",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 1252,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "25612:12:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "25595:29:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "expression": {
                                      "id": 1255,
                                      "name": "obj",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1231,
                                      "src": "25635:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_SellTokensObj_$2098_memory_ptr",
                                        "typeString": "struct INiftyswapExchange.SellTokensObj memory"
                                      }
                                    },
                                    "id": 1256,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "recipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2093,
                                    "src": "25635:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 1257,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "25595:53:0",
                                  "trueExpression": {
                                    "id": 1254,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1103,
                                    "src": "25627:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "25575:73:0"
                              },
                              {
                                "assignments": [
                                  1263
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 1263,
                                    "mutability": "mutable",
                                    "name": "currencyBought",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1282,
                                    "src": "25721:31:0",
                                    "stateVariable": false,
                                    "storageLocation": "memory",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[]"
                                    },
                                    "typeName": {
                                      "baseType": {
                                        "id": 1261,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "25721:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1262,
                                      "nodeType": "ArrayTypeName",
                                      "src": "25721:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                        "typeString": "uint256[]"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 1273,
                                "initialValue": {
                                  "arguments": [
                                    {
                                      "id": 1265,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1106,
                                      "src": "25772:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    {
                                      "id": 1266,
                                      "name": "_amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1109,
                                      "src": "25778:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 1267,
                                        "name": "obj",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1231,
                                        "src": "25788:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SellTokensObj_$2098_memory_ptr",
                                          "typeString": "struct INiftyswapExchange.SellTokensObj memory"
                                        }
                                      },
                                      "id": 1268,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "minCurrency",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2095,
                                      "src": "25788:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 1269,
                                        "name": "obj",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1231,
                                        "src": "25805:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_SellTokensObj_$2098_memory_ptr",
                                          "typeString": "struct INiftyswapExchange.SellTokensObj memory"
                                        }
                                      },
                                      "id": 1270,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "deadline",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 2097,
                                      "src": "25805:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 1271,
                                      "name": "recipient",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1246,
                                      "src": "25819:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1264,
                                    "name": "_tokenToCurrency",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 488,
                                    "src": "25755:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "function (uint256[] memory,uint256[] memory,uint256,uint256,address) returns (uint256[] memory)"
                                    }
                                  },
                                  "id": 1272,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25755:74:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "25721:108:0"
                              },
                              {
                                "eventCall": {
                                  "arguments": [
                                    {
                                      "id": 1275,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1103,
                                      "src": "25859:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 1276,
                                      "name": "recipient",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1246,
                                      "src": "25866:9:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 1277,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1106,
                                      "src": "25877:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    {
                                      "id": 1278,
                                      "name": "_amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1109,
                                      "src": "25883:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    {
                                      "id": 1279,
                                      "name": "currencyBought",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1263,
                                      "src": "25893:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    ],
                                    "id": 1274,
                                    "name": "CurrencyPurchase",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2054,
                                    "src": "25842:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                                      "typeString": "function (address,address,uint256[] memory,uint256[] memory,uint256[] memory)"
                                    }
                                  },
                                  "id": 1280,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "25842:66:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1281,
                                "nodeType": "EmitStatement",
                                "src": "25837:71:0"
                              }
                            ]
                          }
                        },
                        "id": 1398,
                        "nodeType": "IfStatement",
                        "src": "24084:3700:0",
                        "trueBody": {
                          "id": 1215,
                          "nodeType": "Block",
                          "src": "24124:1066:0",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 1137,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 1131,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "24194:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 1132,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "24194:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "id": 1135,
                                          "name": "currency",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 22,
                                          "src": "24216:8:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155_$3875",
                                            "typeString": "contract IERC1155"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_IERC1155_$3875",
                                            "typeString": "contract IERC1155"
                                          }
                                        ],
                                        "id": 1134,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "24208:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 1133,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "24208:7:0",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 1136,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "24208:17:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "24194:31:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e696674797377617045786368616e6765236f6e45524331313535426174636852656365697665643a20494e56414c49445f43555252454e43595f5452414e53464552524544",
                                    "id": 1138,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24227:72:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c7ffe7d1440ea685ab6c9ae79bd3daf8331603102983b2141f392a77909fdde0",
                                      "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_TRANSFERRED\""
                                    },
                                    "value": "NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_TRANSFERRED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_c7ffe7d1440ea685ab6c9ae79bd3daf8331603102983b2141f392a77909fdde0",
                                      "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_TRANSFERRED\""
                                    }
                                  ],
                                  "id": 1130,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "24186:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1139,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24186:114:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1140,
                              "nodeType": "ExpressionStatement",
                              "src": "24186:114:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1145,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 1142,
                                        "name": "_ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1106,
                                        "src": "24316:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 1143,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "24316:11:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 1144,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "24331:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "24316:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e696674797377617045786368616e6765236f6e45524331313535426174636852656365697665643a20494e56414c49445f43555252454e43595f4944535f414d4f554e54",
                                    "id": 1146,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24334:71:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_261362078ad07f72112396c5383cdd4d9b3e7ad1d86bedee7f9a0beffcadc8b9",
                                      "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_IDS_AMOUNT\""
                                    },
                                    "value": "NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_IDS_AMOUNT"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_261362078ad07f72112396c5383cdd4d9b3e7ad1d86bedee7f9a0beffcadc8b9",
                                      "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_IDS_AMOUNT\""
                                    }
                                  ],
                                  "id": 1141,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "24308:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24308:98:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1148,
                              "nodeType": "ExpressionStatement",
                              "src": "24308:98:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1154,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 1150,
                                        "name": "_ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1106,
                                        "src": "24422:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 1152,
                                      "indexExpression": {
                                        "hexValue": "30",
                                        "id": 1151,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "24427:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "24422:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 1153,
                                      "name": "currencyID",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 28,
                                      "src": "24433:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "24422:21:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4e696674797377617045786368616e6765236f6e45524331313535426174636852656365697665643a20494e56414c49445f43555252454e43595f4944",
                                    "id": 1155,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "24445:63:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_19ed05f570a53a98eb1a84996f9124ea7a046c8913e9b15245b8e38dda123e3b",
                                      "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_ID\""
                                    },
                                    "value": "NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_ID"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_19ed05f570a53a98eb1a84996f9124ea7a046c8913e9b15245b8e38dda123e3b",
                                      "typeString": "literal_string \"NiftyswapExchange#onERC1155BatchReceived: INVALID_CURRENCY_ID\""
                                    }
                                  ],
                                  "id": 1149,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "24414:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 1156,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24414:95:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1157,
                              "nodeType": "ExpressionStatement",
                              "src": "24414:95:0"
                            },
                            {
                              "assignments": [
                                1159
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1159,
                                  "mutability": "mutable",
                                  "name": "obj",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1215,
                                  "src": "24585:23:0",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                    "typeString": "struct INiftyswapExchange.BuyTokensObj"
                                  },
                                  "typeName": {
                                    "id": 1158,
                                    "name": "BuyTokensObj",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 2091,
                                    "src": "24585:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BuyTokensObj_$2091_storage_ptr",
                                      "typeString": "struct INiftyswapExchange.BuyTokensObj"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1160,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "24585:23:0"
                            },
                            {
                              "expression": {
                                "id": 1171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    null,
                                    {
                                      "id": 1161,
                                      "name": "obj",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1159,
                                      "src": "24619:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                        "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                      }
                                    }
                                  ],
                                  "id": 1162,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "24616:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$_t_struct$_BuyTokensObj_$2091_memory_ptr_$",
                                    "typeString": "tuple(,struct INiftyswapExchange.BuyTokensObj memory)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 1165,
                                      "name": "_data",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1111,
                                      "src": "24637:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "components": [
                                        {
                                          "id": 1167,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "24645:6:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes4_$",
                                            "typeString": "type(bytes4)"
                                          },
                                          "typeName": {
                                            "id": 1166,
                                            "name": "bytes4",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "24645:6:0",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        {
                                          "id": 1168,
                                          "name": "BuyTokensObj",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2091,
                                          "src": "24653:12:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_struct$_BuyTokensObj_$2091_storage_ptr_$",
                                            "typeString": "type(struct INiftyswapExchange.BuyTokensObj storage pointer)"
                                          }
                                        }
                                      ],
                                      "id": 1169,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "24644:22:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_BuyTokensObj_$2091_storage_ptr_$_$",
                                        "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.BuyTokensObj storage pointer))"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_BuyTokensObj_$2091_storage_ptr_$_$",
                                        "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.BuyTokensObj storage pointer))"
                                      }
                                    ],
                                    "expression": {
                                      "id": 1163,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "24626:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 1164,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "decode",
                                    "nodeType": "MemberAccess",
                                    "src": "24626:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 1170,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "24626:41:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_bytes4_$_t_struct$_BuyTokensObj_$2091_memory_ptr_$",
                                    "typeString": "tuple(bytes4,struct INiftyswapExchange.BuyTokensObj memory)"
                                  }
                                },
                                "src": "24616:51:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1172,
                              "nodeType": "ExpressionStatement",
                              "src": "24616:51:0"
                            },
                            {
                              "assignments": [
                                1174
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1174,
                                  "mutability": "mutable",
                                  "name": "recipient",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1215,
                                  "src": "24675:17:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 1173,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "24675:7:0",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1186,
                              "initialValue": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 1181,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 1175,
                                      "name": "obj",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1159,
                                      "src": "24695:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                        "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                      }
                                    },
                                    "id": 1176,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "recipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2082,
                                    "src": "24695:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "307830",
                                        "id": 1179,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "24720:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0x0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 1178,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "24712:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1177,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "24712:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1180,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24712:12:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "src": "24695:29:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseExpression": {
                                  "expression": {
                                    "id": 1183,
                                    "name": "obj",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1159,
                                    "src": "24735:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                      "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                    }
                                  },
                                  "id": 1184,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "recipient",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2082,
                                  "src": "24735:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 1185,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "Conditional",
                                "src": "24695:53:0",
                                "trueExpression": {
                                  "id": 1182,
                                  "name": "_from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1103,
                                  "src": "24727:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "24675:73:0"
                            },
                            {
                              "assignments": [
                                1191
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1191,
                                  "mutability": "mutable",
                                  "name": "currencySold",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1215,
                                  "src": "24818:29:0",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1189,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "24818:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1190,
                                    "nodeType": "ArrayTypeName",
                                    "src": "24818:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[]"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1204,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 1193,
                                      "name": "obj",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1159,
                                      "src": "24867:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                        "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                      }
                                    },
                                    "id": 1194,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tokensBoughtIDs",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2085,
                                    "src": "24867:19:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1195,
                                      "name": "obj",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1159,
                                      "src": "24888:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                        "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                      }
                                    },
                                    "id": 1196,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tokensBoughtAmounts",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2088,
                                    "src": "24888:23:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 1197,
                                      "name": "_amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1109,
                                      "src": "24913:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 1199,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 1198,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "24922:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "24913:11:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1200,
                                      "name": "obj",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1159,
                                      "src": "24926:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                        "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                      }
                                    },
                                    "id": 1201,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "deadline",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2090,
                                    "src": "24926:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 1202,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1174,
                                    "src": "24940:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1192,
                                  "name": "_currencyToToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 270,
                                  "src": "24850:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256[] memory,uint256[] memory,uint256,uint256,address) returns (uint256[] memory)"
                                  }
                                },
                                "id": 1203,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24850:100:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "24818:132:0"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 1206,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1103,
                                    "src": "24978:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1207,
                                    "name": "recipient",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1174,
                                    "src": "24985:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1208,
                                      "name": "obj",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1159,
                                      "src": "24996:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                        "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                      }
                                    },
                                    "id": 1209,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tokensBoughtIDs",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2085,
                                    "src": "24996:19:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 1210,
                                      "name": "obj",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1159,
                                      "src": "25017:3:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                        "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                      }
                                    },
                                    "id": 1211,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "tokensBoughtAmounts",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2088,
                                    "src": "25017:23:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 1212,
                                    "name": "currencySold",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1191,
                                    "src": "25042:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  ],
                                  "id": 1205,
                                  "name": "TokensPurchase",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2039,
                                  "src": "24963:14:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,uint256[] memory)"
                                  }
                                },
                                "id": 1213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24963:92:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1214,
                              "nodeType": "EmitStatement",
                              "src": "24958:97:0"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 1399,
                          "name": "ERC1155_BATCH_RECEIVED_VALUE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4293,
                          "src": "27797:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 1116,
                        "id": 1400,
                        "nodeType": "Return",
                        "src": "27790:35:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1099,
                    "nodeType": "StructuredDocumentation",
                    "src": "22638:734:0",
                    "text": " @notice Handle which method is being called on transfer\n @dev `_data` must be encoded as follow: abi.encode(bytes4, MethodObj)\n   where bytes4 argument is the MethodObj object signature passed as defined\n   in the `Signatures for onReceive control logic` section above\n @param _from     The address which previously owned the Token\n @param _ids      An array containing ids of each Token being transferred\n @param _amounts  An array containing amounts of each Token being transferred\n @param _data     Method signature and corresponding encoded arguments for method to call on *this* contract\n @return bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\")"
                  },
                  "functionSelector": "bc197c81",
                  "id": 1402,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1113,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "23540:8:0"
                  },
                  "parameters": {
                    "id": 1112,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1101,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1402,
                        "src": "23412:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1100,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23412:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1103,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1402,
                        "src": "23439:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1102,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "23439:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1106,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1402,
                        "src": "23458:21:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1104,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "23458:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1105,
                          "nodeType": "ArrayTypeName",
                          "src": "23458:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1109,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 1402,
                        "src": "23485:25:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1107,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "23485:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1108,
                          "nodeType": "ArrayTypeName",
                          "src": "23485:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1111,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1402,
                        "src": "23516:18:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1110,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "23516:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23406:129:0"
                  },
                  "returnParameters": {
                    "id": 1116,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1115,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1402,
                        "src": "23564:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1114,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "23564:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23563:8:0"
                  },
                  "scope": 1946,
                  "src": "23375:4455:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2129
                  ],
                  "body": {
                    "id": 1468,
                    "nodeType": "Block",
                    "src": "28041:374:0",
                    "statements": [
                      {
                        "assignments": [
                          1423
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1423,
                            "mutability": "mutable",
                            "name": "ids",
                            "nodeType": "VariableDeclaration",
                            "scope": 1468,
                            "src": "28047:20:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1421,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "28047:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1422,
                              "nodeType": "ArrayTypeName",
                              "src": "28047:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1429,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 1427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28084:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 1426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "28070:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1424,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "28074:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1425,
                              "nodeType": "ArrayTypeName",
                              "src": "28074:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 1428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28070:16:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28047:39:0"
                      },
                      {
                        "assignments": [
                          1434
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1434,
                            "mutability": "mutable",
                            "name": "amounts",
                            "nodeType": "VariableDeclaration",
                            "scope": 1468,
                            "src": "28092:24:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1432,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "28092:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1433,
                              "nodeType": "ArrayTypeName",
                              "src": "28092:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1440,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 1438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28133:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 1437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "28119:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1435,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "28123:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1436,
                              "nodeType": "ArrayTypeName",
                              "src": "28123:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 1439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28119:16:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28092:43:0"
                      },
                      {
                        "expression": {
                          "id": 1445,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1441,
                              "name": "ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1423,
                              "src": "28142:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1443,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 1442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28146:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "28142:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1444,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1409,
                            "src": "28151:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "28142:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1446,
                        "nodeType": "ExpressionStatement",
                        "src": "28142:12:0"
                      },
                      {
                        "expression": {
                          "id": 1451,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 1447,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1434,
                              "src": "28160:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 1449,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 1448,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28168:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "28160:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1450,
                            "name": "_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1411,
                            "src": "28173:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "28160:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1452,
                        "nodeType": "ExpressionStatement",
                        "src": "28160:20:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1462,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1454,
                                "name": "ERC1155_BATCH_RECEIVED_VALUE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4293,
                                "src": "28202:28:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 1456,
                                    "name": "_operator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1405,
                                    "src": "28257:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1457,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1407,
                                    "src": "28268:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 1458,
                                    "name": "ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1423,
                                    "src": "28275:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 1459,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1434,
                                    "src": "28280:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 1460,
                                    "name": "_data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1413,
                                    "src": "28289:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 1455,
                                  "name": "onERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1402,
                                  "src": "28234:22:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) returns (bytes4)"
                                  }
                                },
                                "id": 1461,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "28234:61:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "28202:93:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e696674797377617045786368616e6765236f6e4552433131353552656365697665643a20494e56414c49445f4f4e52454345495645445f4d455353414745",
                              "id": 1463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28303:65:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_80ab4d0f9a7f6d892eebce349f16ee0deec8f61bc67a1a42983c8a69e65417a6",
                                "typeString": "literal_string \"NiftyswapExchange#onERC1155Received: INVALID_ONRECEIVED_MESSAGE\""
                              },
                              "value": "NiftyswapExchange#onERC1155Received: INVALID_ONRECEIVED_MESSAGE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_80ab4d0f9a7f6d892eebce349f16ee0deec8f61bc67a1a42983c8a69e65417a6",
                                "typeString": "literal_string \"NiftyswapExchange#onERC1155Received: INVALID_ONRECEIVED_MESSAGE\""
                              }
                            ],
                            "id": 1453,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "28187:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1464,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28187:187:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1465,
                        "nodeType": "ExpressionStatement",
                        "src": "28187:187:0"
                      },
                      {
                        "expression": {
                          "id": 1466,
                          "name": "ERC1155_RECEIVED_VALUE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4290,
                          "src": "28388:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 1418,
                        "id": 1467,
                        "nodeType": "Return",
                        "src": "28381:29:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1403,
                    "nodeType": "StructuredDocumentation",
                    "src": "27834:55:0",
                    "text": " @dev Will pass to onERC115Batch5Received"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 1469,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1415,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "28007:8:0"
                  },
                  "parameters": {
                    "id": 1414,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1405,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 1469,
                        "src": "27919:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1404,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27919:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1407,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 1469,
                        "src": "27938:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1406,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27938:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1409,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 1469,
                        "src": "27953:11:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1408,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27953:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1411,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 1469,
                        "src": "27966:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1410,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "27966:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1413,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 1469,
                        "src": "27983:18:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1412,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "27983:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27918:84:0"
                  },
                  "returnParameters": {
                    "id": 1418,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1417,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1469,
                        "src": "28031:6:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1416,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "28031:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28030:8:0"
                  },
                  "scope": 1946,
                  "src": "27892:523:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 1477,
                    "nodeType": "Block",
                    "src": "28521:57:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "4e696674797377617045786368616e67653a554e535550504f525445445f4d4554484f44",
                              "id": 1474,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "28534:38:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6c876790e22acc3a34b7f27a514e097da93f634c7e233b6351f8105c6aaed54f",
                                "typeString": "literal_string \"NiftyswapExchange:UNSUPPORTED_METHOD\""
                              },
                              "value": "NiftyswapExchange:UNSUPPORTED_METHOD"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_6c876790e22acc3a34b7f27a514e097da93f634c7e233b6351f8105c6aaed54f",
                                "typeString": "literal_string \"NiftyswapExchange:UNSUPPORTED_METHOD\""
                              }
                            ],
                            "id": 1473,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "28527:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 1475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28527:46:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1476,
                        "nodeType": "ExpressionStatement",
                        "src": "28527:46:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1470,
                    "nodeType": "StructuredDocumentation",
                    "src": "28419:78:0",
                    "text": " @notice Prevents receiving Ether or calls to unsuported methods"
                  },
                  "id": 1478,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1471,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28509:2:0"
                  },
                  "returnParameters": {
                    "id": 1472,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "28521:0:0"
                  },
                  "scope": 1946,
                  "src": "28500:78:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2181
                  ],
                  "body": {
                    "id": 1529,
                    "nodeType": "Block",
                    "src": "29025:247:0",
                    "statements": [
                      {
                        "assignments": [
                          1490
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1490,
                            "mutability": "mutable",
                            "name": "nIds",
                            "nodeType": "VariableDeclaration",
                            "scope": 1529,
                            "src": "29031:12:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1489,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "29031:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1493,
                        "initialValue": {
                          "expression": {
                            "id": 1491,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1482,
                            "src": "29046:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "29046:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29031:26:0"
                      },
                      {
                        "assignments": [
                          1498
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1498,
                            "mutability": "mutable",
                            "name": "currencyReservesReturn",
                            "nodeType": "VariableDeclaration",
                            "scope": 1529,
                            "src": "29063:39:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1496,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "29063:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1497,
                              "nodeType": "ArrayTypeName",
                              "src": "29063:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1504,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1502,
                              "name": "nIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1490,
                              "src": "29119:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1501,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "29105:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1499,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "29109:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1500,
                              "nodeType": "ArrayTypeName",
                              "src": "29109:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 1503,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29105:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29063:61:0"
                      },
                      {
                        "body": {
                          "id": 1525,
                          "nodeType": "Block",
                          "src": "29165:68:0",
                          "statements": [
                            {
                              "expression": {
                                "id": 1523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1515,
                                    "name": "currencyReservesReturn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1498,
                                    "src": "29173:22:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1517,
                                  "indexExpression": {
                                    "id": 1516,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1506,
                                    "src": "29196:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "29173:25:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 1518,
                                    "name": "currencyReserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 39,
                                    "src": "29201:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1522,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 1519,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1482,
                                      "src": "29218:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1521,
                                    "indexExpression": {
                                      "id": 1520,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1506,
                                      "src": "29223:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "29218:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "29201:25:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "29173:53:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1524,
                              "nodeType": "ExpressionStatement",
                              "src": "29173:53:0"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1509,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1506,
                            "src": "29150:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 1510,
                            "name": "nIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1490,
                            "src": "29154:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "29150:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1526,
                        "initializationExpression": {
                          "assignments": [
                            1506
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1506,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1526,
                              "src": "29135:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1505,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "29135:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1508,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1507,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29147:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "29135:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "29160:3:0",
                            "subExpression": {
                              "id": 1512,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1506,
                              "src": "29160:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1514,
                          "nodeType": "ExpressionStatement",
                          "src": "29160:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "29130:103:0"
                      },
                      {
                        "expression": {
                          "id": 1527,
                          "name": "currencyReservesReturn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1498,
                          "src": "29245:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 1488,
                        "id": 1528,
                        "nodeType": "Return",
                        "src": "29238:29:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1479,
                    "nodeType": "StructuredDocumentation",
                    "src": "28703:204:0",
                    "text": " @notice Get amount of currency in reserve for each Token _id in _ids\n @param _ids Array of ID sto query currency reserve of\n @return amount of currency in reserve for each Token _id"
                  },
                  "functionSelector": "209b96c5",
                  "id": 1530,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrencyReserves",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1484,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "28973:8:0"
                  },
                  "parameters": {
                    "id": 1483,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1482,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1530,
                        "src": "28944:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1480,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "28944:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1481,
                          "nodeType": "ArrayTypeName",
                          "src": "28944:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "28938:30:0"
                  },
                  "returnParameters": {
                    "id": 1488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1487,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1530,
                        "src": "29005:16:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1485,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "29005:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1486,
                          "nodeType": "ArrayTypeName",
                          "src": "29005:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29004:18:0"
                  },
                  "scope": 1946,
                  "src": "28910:362:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2194
                  ],
                  "body": {
                    "id": 1603,
                    "nodeType": "Block",
                    "src": "29733:368:0",
                    "statements": [
                      {
                        "assignments": [
                          1545
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1545,
                            "mutability": "mutable",
                            "name": "nIds",
                            "nodeType": "VariableDeclaration",
                            "scope": 1603,
                            "src": "29739:12:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1544,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "29739:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1548,
                        "initialValue": {
                          "expression": {
                            "id": 1546,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1534,
                            "src": "29754:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "29754:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29739:26:0"
                      },
                      {
                        "assignments": [
                          1553
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1553,
                            "mutability": "mutable",
                            "name": "prices",
                            "nodeType": "VariableDeclaration",
                            "scope": 1603,
                            "src": "29771:23:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1551,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "29771:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1552,
                              "nodeType": "ArrayTypeName",
                              "src": "29771:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1559,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1557,
                              "name": "nIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1545,
                              "src": "29811:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "29797:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1554,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "29801:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1555,
                              "nodeType": "ArrayTypeName",
                              "src": "29801:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 1558,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "29797:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "29771:45:0"
                      },
                      {
                        "body": {
                          "id": 1599,
                          "nodeType": "Block",
                          "src": "29858:198:0",
                          "statements": [
                            {
                              "assignments": [
                                1571
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1571,
                                  "mutability": "mutable",
                                  "name": "tokenReserve",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1599,
                                  "src": "29897:20:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1570,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "29897:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1582,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1576,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "29944:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                          "typeString": "contract NiftyswapExchange"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                          "typeString": "contract NiftyswapExchange"
                                        }
                                      ],
                                      "id": 1575,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "29936:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1574,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "29936:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1577,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "29936:13:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 1578,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1534,
                                      "src": "29951:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1580,
                                    "indexExpression": {
                                      "id": 1579,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1561,
                                      "src": "29956:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "29951:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1572,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20,
                                    "src": "29920:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155_$3875",
                                      "typeString": "contract IERC1155"
                                    }
                                  },
                                  "id": 1573,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3843,
                                  "src": "29920:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view external returns (uint256)"
                                  }
                                },
                                "id": 1581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29920:39:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "29897:62:0"
                            },
                            {
                              "expression": {
                                "id": 1597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1583,
                                    "name": "prices",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1553,
                                    "src": "29967:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1585,
                                  "indexExpression": {
                                    "id": 1584,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1561,
                                    "src": "29974:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "29967:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 1587,
                                        "name": "_tokensBought",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1537,
                                        "src": "29991:13:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 1589,
                                      "indexExpression": {
                                        "id": 1588,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1561,
                                        "src": "30005:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "29991:16:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 1590,
                                        "name": "currencyReserves",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 39,
                                        "src": "30009:16:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 1594,
                                      "indexExpression": {
                                        "baseExpression": {
                                          "id": 1591,
                                          "name": "_ids",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1534,
                                          "src": "30026:4:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                            "typeString": "uint256[] calldata"
                                          }
                                        },
                                        "id": 1593,
                                        "indexExpression": {
                                          "id": 1592,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1561,
                                          "src": "30031:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "30026:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "30009:25:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 1595,
                                      "name": "tokenReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1571,
                                      "src": "30036:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1586,
                                    "name": "getBuyPrice",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 326,
                                    "src": "29979:11:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1596,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "29979:70:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "29967:82:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1598,
                              "nodeType": "ExpressionStatement",
                              "src": "29967:82:0"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1566,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1564,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1561,
                            "src": "29843:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 1565,
                            "name": "nIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1545,
                            "src": "29847:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "29843:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1600,
                        "initializationExpression": {
                          "assignments": [
                            1561
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1561,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1600,
                              "src": "29828:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1560,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "29828:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1563,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "29840:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "29828:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1568,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "29853:3:0",
                            "subExpression": {
                              "id": 1567,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1561,
                              "src": "29853:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1569,
                          "nodeType": "ExpressionStatement",
                          "src": "29853:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "29823:233:0"
                      },
                      {
                        "expression": {
                          "id": 1601,
                          "name": "prices",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1553,
                          "src": "30090:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 1543,
                        "id": 1602,
                        "nodeType": "Return",
                        "src": "30083:13:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1531,
                    "nodeType": "StructuredDocumentation",
                    "src": "29276:296:0",
                    "text": " @notice Return price for `currency => Token _id` trades with an exact token amount.\n @param _ids           Array of ID of tokens bought.\n @param _tokensBought Amount of Tokens bought.\n @return Amount of currency needed to buy Tokens in _ids for amounts in _tokensBought"
                  },
                  "functionSelector": "be571468",
                  "id": 1604,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPrice_currencyToToken",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1539,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "29681:8:0"
                  },
                  "parameters": {
                    "id": 1538,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1534,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1604,
                        "src": "29614:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1532,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "29614:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1533,
                          "nodeType": "ArrayTypeName",
                          "src": "29614:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1537,
                        "mutability": "mutable",
                        "name": "_tokensBought",
                        "nodeType": "VariableDeclaration",
                        "scope": 1604,
                        "src": "29643:32:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1535,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "29643:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1536,
                          "nodeType": "ArrayTypeName",
                          "src": "29643:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29608:68:0"
                  },
                  "returnParameters": {
                    "id": 1543,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1542,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1604,
                        "src": "29713:16:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1540,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "29713:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1541,
                          "nodeType": "ArrayTypeName",
                          "src": "29713:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "29712:18:0"
                  },
                  "scope": 1946,
                  "src": "29575:526:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2207
                  ],
                  "body": {
                    "id": 1677,
                    "nodeType": "Block",
                    "src": "30569:366:0",
                    "statements": [
                      {
                        "assignments": [
                          1619
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1619,
                            "mutability": "mutable",
                            "name": "nIds",
                            "nodeType": "VariableDeclaration",
                            "scope": 1677,
                            "src": "30575:12:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1618,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "30575:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1622,
                        "initialValue": {
                          "expression": {
                            "id": 1620,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1608,
                            "src": "30590:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "30590:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30575:26:0"
                      },
                      {
                        "assignments": [
                          1627
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1627,
                            "mutability": "mutable",
                            "name": "prices",
                            "nodeType": "VariableDeclaration",
                            "scope": 1677,
                            "src": "30607:23:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1625,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "30607:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1626,
                              "nodeType": "ArrayTypeName",
                              "src": "30607:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1633,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1631,
                              "name": "nIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1619,
                              "src": "30647:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1630,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "30633:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1628,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "30637:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1629,
                              "nodeType": "ArrayTypeName",
                              "src": "30637:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 1632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30633:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "30607:45:0"
                      },
                      {
                        "body": {
                          "id": 1673,
                          "nodeType": "Block",
                          "src": "30694:197:0",
                          "statements": [
                            {
                              "assignments": [
                                1645
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1645,
                                  "mutability": "mutable",
                                  "name": "tokenReserve",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1673,
                                  "src": "30733:20:0",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 1644,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "30733:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1656,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 1650,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "30780:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                          "typeString": "contract NiftyswapExchange"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                          "typeString": "contract NiftyswapExchange"
                                        }
                                      ],
                                      "id": 1649,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "30772:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 1648,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "30772:7:0",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1651,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "30772:13:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 1652,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1608,
                                      "src": "30787:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1654,
                                    "indexExpression": {
                                      "id": 1653,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1635,
                                      "src": "30792:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "30787:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1646,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20,
                                    "src": "30756:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155_$3875",
                                      "typeString": "contract IERC1155"
                                    }
                                  },
                                  "id": 1647,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3843,
                                  "src": "30756:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (address,uint256) view external returns (uint256)"
                                  }
                                },
                                "id": 1655,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30756:39:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "30733:62:0"
                            },
                            {
                              "expression": {
                                "id": 1671,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1657,
                                    "name": "prices",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1627,
                                    "src": "30803:6:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1659,
                                  "indexExpression": {
                                    "id": 1658,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1635,
                                    "src": "30810:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "30803:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 1661,
                                        "name": "_tokensSold",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1611,
                                        "src": "30828:11:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                          "typeString": "uint256[] calldata"
                                        }
                                      },
                                      "id": 1663,
                                      "indexExpression": {
                                        "id": 1662,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1635,
                                        "src": "30840:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "30828:14:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 1664,
                                      "name": "tokenReserve",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1645,
                                      "src": "30844:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 1665,
                                        "name": "currencyReserves",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 39,
                                        "src": "30858:16:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 1669,
                                      "indexExpression": {
                                        "baseExpression": {
                                          "id": 1666,
                                          "name": "_ids",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1608,
                                          "src": "30875:4:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                            "typeString": "uint256[] calldata"
                                          }
                                        },
                                        "id": 1668,
                                        "indexExpression": {
                                          "id": 1667,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1635,
                                          "src": "30880:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "30875:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "30858:25:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 1660,
                                    "name": "getSellPrice",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 541,
                                    "src": "30815:12:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 1670,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "30815:69:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "30803:81:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1672,
                              "nodeType": "ExpressionStatement",
                              "src": "30803:81:0"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1640,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1638,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1635,
                            "src": "30679:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 1639,
                            "name": "nIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1619,
                            "src": "30683:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "30679:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1674,
                        "initializationExpression": {
                          "assignments": [
                            1635
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1635,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1674,
                              "src": "30664:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1634,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "30664:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1637,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1636,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30676:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "30664:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1642,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "30689:3:0",
                            "subExpression": {
                              "id": 1641,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1635,
                              "src": "30689:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1643,
                          "nodeType": "ExpressionStatement",
                          "src": "30689:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "30659:232:0"
                      },
                      {
                        "expression": {
                          "id": 1675,
                          "name": "prices",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1627,
                          "src": "30924:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 1617,
                        "id": 1676,
                        "nodeType": "Return",
                        "src": "30917:13:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1605,
                    "nodeType": "StructuredDocumentation",
                    "src": "30105:305:0",
                    "text": " @notice Return price for `Token _id => currency` trades with an exact token amount.\n @param _ids        Array of IDs  token sold.\n @param _tokensSold Array of amount of each Token sold.\n @return Amount of currency that can be bought for Tokens in _ids for amounts in _tokensSold"
                  },
                  "functionSelector": "863ed300",
                  "id": 1678,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPrice_tokenToCurrency",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1613,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "30517:8:0"
                  },
                  "parameters": {
                    "id": 1612,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1608,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1678,
                        "src": "30452:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1606,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "30452:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1607,
                          "nodeType": "ArrayTypeName",
                          "src": "30452:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1611,
                        "mutability": "mutable",
                        "name": "_tokensSold",
                        "nodeType": "VariableDeclaration",
                        "scope": 1678,
                        "src": "30481:30:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1609,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "30481:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1610,
                          "nodeType": "ArrayTypeName",
                          "src": "30481:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30446:66:0"
                  },
                  "returnParameters": {
                    "id": 1617,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1616,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1678,
                        "src": "30549:16:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1614,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "30549:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1615,
                          "nodeType": "ArrayTypeName",
                          "src": "30549:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "30548:18:0"
                  },
                  "scope": 1946,
                  "src": "30413:522:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2223
                  ],
                  "body": {
                    "id": 1690,
                    "nodeType": "Block",
                    "src": "31080:32:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1687,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20,
                              "src": "31101:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155_$3875",
                                "typeString": "contract IERC1155"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_IERC1155_$3875",
                                "typeString": "contract IERC1155"
                              }
                            ],
                            "id": 1686,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "31093:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1685,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "31093:7:0",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31093:14:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1684,
                        "id": 1689,
                        "nodeType": "Return",
                        "src": "31086:21:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1679,
                    "nodeType": "StructuredDocumentation",
                    "src": "30939:70:0",
                    "text": " @return Address of Token that is sold on this exchange."
                  },
                  "functionSelector": "10fe9ae8",
                  "id": 1691,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTokenAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1681,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31039:8:0"
                  },
                  "parameters": {
                    "id": 1680,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31036:2:0"
                  },
                  "returnParameters": {
                    "id": 1684,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1683,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1691,
                        "src": "31071:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1682,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "31071:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31070:9:0"
                  },
                  "scope": 1946,
                  "src": "31012:100:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2231
                  ],
                  "body": {
                    "id": 1707,
                    "nodeType": "Block",
                    "src": "31301:49:0",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "arguments": [
                                {
                                  "id": 1702,
                                  "name": "currency",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 22,
                                  "src": "31323:8:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC1155_$3875",
                                    "typeString": "contract IERC1155"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC1155_$3875",
                                    "typeString": "contract IERC1155"
                                  }
                                ],
                                "id": 1701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "31315:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1700,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "31315:7:0",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1703,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "31315:17:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1704,
                              "name": "currencyID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 28,
                              "src": "31334:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 1705,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "31314:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                            "typeString": "tuple(address,uint256)"
                          }
                        },
                        "functionReturnParameters": 1699,
                        "id": 1706,
                        "nodeType": "Return",
                        "src": "31307:38:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1692,
                    "nodeType": "StructuredDocumentation",
                    "src": "31116:105:0",
                    "text": " @return Address of the currency contract that is used as currency and its corresponding id"
                  },
                  "functionSelector": "46adf5ca",
                  "id": 1708,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrencyInfo",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1694,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31251:8:0"
                  },
                  "parameters": {
                    "id": 1693,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "31248:2:0"
                  },
                  "returnParameters": {
                    "id": 1699,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1696,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1708,
                        "src": "31283:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1695,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "31283:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1698,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1708,
                        "src": "31292:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1697,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "31292:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31282:18:0"
                  },
                  "scope": 1946,
                  "src": "31224:126:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2217
                  ],
                  "body": {
                    "id": 1759,
                    "nodeType": "Block",
                    "src": "31629:317:0",
                    "statements": [
                      {
                        "assignments": [
                          1720
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1720,
                            "mutability": "mutable",
                            "name": "nIds",
                            "nodeType": "VariableDeclaration",
                            "scope": 1759,
                            "src": "31656:12:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1719,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "31656:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1723,
                        "initialValue": {
                          "expression": {
                            "id": 1721,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1712,
                            "src": "31671:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                              "typeString": "uint256[] calldata"
                            }
                          },
                          "id": 1722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "31671:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "31656:26:0"
                      },
                      {
                        "assignments": [
                          1728
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1728,
                            "mutability": "mutable",
                            "name": "batchTotalSupplies",
                            "nodeType": "VariableDeclaration",
                            "scope": 1759,
                            "src": "31706:35:0",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1726,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "31706:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1727,
                              "nodeType": "ArrayTypeName",
                              "src": "31706:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1734,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1732,
                              "name": "nIds",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1720,
                              "src": "31758:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "31744:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 1729,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "31748:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1730,
                              "nodeType": "ArrayTypeName",
                              "src": "31748:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 1733,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "31744:19:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "31706:57:0"
                      },
                      {
                        "body": {
                          "id": 1755,
                          "nodeType": "Block",
                          "src": "31849:61:0",
                          "statements": [
                            {
                              "expression": {
                                "id": 1753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1745,
                                    "name": "batchTotalSupplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1728,
                                    "src": "31857:18:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1747,
                                  "indexExpression": {
                                    "id": 1746,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1736,
                                    "src": "31876:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "31857:21:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "id": 1748,
                                    "name": "totalSupplies",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35,
                                    "src": "31881:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 1752,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 1749,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1712,
                                      "src": "31895:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                        "typeString": "uint256[] calldata"
                                      }
                                    },
                                    "id": 1751,
                                    "indexExpression": {
                                      "id": 1750,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1736,
                                      "src": "31900:1:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "31895:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "31881:22:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "31857:46:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1754,
                              "nodeType": "ExpressionStatement",
                              "src": "31857:46:0"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1739,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1736,
                            "src": "31834:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 1740,
                            "name": "nIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1720,
                            "src": "31838:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "31834:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1756,
                        "initializationExpression": {
                          "assignments": [
                            1736
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1736,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 1756,
                              "src": "31819:9:0",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 1735,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "31819:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 1738,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 1737,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "31831:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "31819:13:0"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 1743,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "31844:3:0",
                            "subExpression": {
                              "id": 1742,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1736,
                              "src": "31844:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1744,
                          "nodeType": "ExpressionStatement",
                          "src": "31844:3:0"
                        },
                        "nodeType": "ForStatement",
                        "src": "31814:96:0"
                      },
                      {
                        "expression": {
                          "id": 1757,
                          "name": "batchTotalSupplies",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1728,
                          "src": "31923:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 1718,
                        "id": 1758,
                        "nodeType": "Return",
                        "src": "31916:25:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1709,
                    "nodeType": "StructuredDocumentation",
                    "src": "31354:167:0",
                    "text": " @notice Get total supply of liquidity tokens\n @param _ids ID of the Tokens\n @return The total supply of each liquidity token id provided in _ids"
                  },
                  "functionSelector": "2bef5e38",
                  "id": 1760,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1714,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "31577:8:0"
                  },
                  "parameters": {
                    "id": 1713,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1712,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 1760,
                        "src": "31548:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1710,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "31548:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1711,
                          "nodeType": "ArrayTypeName",
                          "src": "31548:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31547:25:0"
                  },
                  "returnParameters": {
                    "id": 1718,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1717,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1760,
                        "src": "31609:16:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1715,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "31609:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1716,
                          "nodeType": "ArrayTypeName",
                          "src": "31609:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "31608:18:0"
                  },
                  "scope": 1946,
                  "src": "31524:422:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2237
                  ],
                  "body": {
                    "id": 1769,
                    "nodeType": "Block",
                    "src": "32092:25:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 1767,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26,
                          "src": "32105:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 1766,
                        "id": 1768,
                        "nodeType": "Return",
                        "src": "32098:14:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1761,
                    "nodeType": "StructuredDocumentation",
                    "src": "31950:69:0",
                    "text": " @return Address of factory that created this exchange."
                  },
                  "functionSelector": "a9c2e36c",
                  "id": 1770,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getFactoryAddress",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1763,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "32051:8:0"
                  },
                  "parameters": {
                    "id": 1762,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "32048:2:0"
                  },
                  "returnParameters": {
                    "id": 1766,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1765,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1770,
                        "src": "32083:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "32083:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32082:9:0"
                  },
                  "scope": 1946,
                  "src": "32022:95:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1803,
                    "nodeType": "Block",
                    "src": "32454:66:0",
                    "statements": [
                      {
                        "expression": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1782,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1773,
                                "src": "32467:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "%",
                              "rightExpression": {
                                "id": 1783,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1775,
                                "src": "32471:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "32467:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 1785,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "32476:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "32467:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "components": [
                              {
                                "arguments": [
                                  {
                                    "hexValue": "31",
                                    "id": 1797,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "32506:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "expression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 1794,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 1792,
                                          "name": "a",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1773,
                                          "src": "32497:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "/",
                                        "rightExpression": {
                                          "id": 1793,
                                          "name": "b",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1775,
                                          "src": "32499:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "32497:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 1795,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "32496:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1796,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7444,
                                  "src": "32496:9:0",
                                  "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": 1798,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "32496:12:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "74727565",
                                "id": 1799,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "32510:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              }
                            ],
                            "id": 1800,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "32495:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                              "typeString": "tuple(uint256,bool)"
                            }
                          },
                          "id": 1801,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "32467:48:0",
                          "trueExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1789,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1787,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1773,
                                  "src": "32481:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 1788,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1775,
                                  "src": "32483:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "32481:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 1790,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "32486:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              }
                            ],
                            "id": 1791,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "32480:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                              "typeString": "tuple(uint256,bool)"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_bool_$",
                            "typeString": "tuple(uint256,bool)"
                          }
                        },
                        "functionReturnParameters": 1781,
                        "id": 1802,
                        "nodeType": "Return",
                        "src": "32460:55:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1771,
                    "nodeType": "StructuredDocumentation",
                    "src": "32242:131:0",
                    "text": " @notice Divides two numbers and add 1 if there is a rounding error\n @param a Numerator\n @param b Denominator"
                  },
                  "id": 1804,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "divRound",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1773,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 1804,
                        "src": "32394:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1772,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "32394:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1775,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 1804,
                        "src": "32405:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1774,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "32405:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32393:22:0"
                  },
                  "returnParameters": {
                    "id": 1781,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1778,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1804,
                        "src": "32439:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1777,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "32439:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1780,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1804,
                        "src": "32448:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1779,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "32448:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32438:15:0"
                  },
                  "scope": 1946,
                  "src": "32376:144:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1913,
                    "nodeType": "Block",
                    "src": "33099:781:0",
                    "statements": [
                      {
                        "assignments": [
                          1815
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1815,
                            "mutability": "mutable",
                            "name": "nTokens",
                            "nodeType": "VariableDeclaration",
                            "scope": 1913,
                            "src": "33105:15:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1814,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "33105:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1818,
                        "initialValue": {
                          "expression": {
                            "id": 1816,
                            "name": "_tokenIds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1808,
                            "src": "33123:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 1817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "33123:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "33105:34:0"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1821,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1819,
                            "name": "nTokens",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1815,
                            "src": "33218:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 1820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "33229:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "33218:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 1911,
                          "nodeType": "Block",
                          "src": "33402:474:0",
                          "statements": [
                            {
                              "assignments": [
                                1855
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1855,
                                  "mutability": "mutable",
                                  "name": "thisAddressArray",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1911,
                                  "src": "33484:33:0",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1853,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "33484:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 1854,
                                    "nodeType": "ArrayTypeName",
                                    "src": "33484:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[]"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1861,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 1859,
                                    "name": "nTokens",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1815,
                                    "src": "33534:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1858,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "33520:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256) pure returns (address[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1856,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "33524:7:0",
                                      "stateMutability": "nonpayable",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 1857,
                                    "nodeType": "ArrayTypeName",
                                    "src": "33524:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                                      "typeString": "address[]"
                                    }
                                  }
                                },
                                "id": 1860,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33520:22:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "33484:58:0"
                            },
                            {
                              "expression": {
                                "id": 1869,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1862,
                                    "name": "thisAddressArray",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1855,
                                    "src": "33550:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 1864,
                                  "indexExpression": {
                                    "hexValue": "30",
                                    "id": 1863,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33567:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "33550:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 1867,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "33580:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                        "typeString": "contract NiftyswapExchange"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                        "typeString": "contract NiftyswapExchange"
                                      }
                                    ],
                                    "id": 1866,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "33572:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1865,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "33572:7:0",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 1868,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "33572:13:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "33550:35:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 1870,
                              "nodeType": "ExpressionStatement",
                              "src": "33550:35:0"
                            },
                            {
                              "body": {
                                "id": 1903,
                                "nodeType": "Block",
                                "src": "33632:174:0",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1890,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "baseExpression": {
                                              "id": 1882,
                                              "name": "_tokenIds",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1808,
                                              "src": "33650:9:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 1886,
                                            "indexExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 1885,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 1883,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1872,
                                                "src": "33660:1:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "hexValue": "31",
                                                "id": 1884,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "33662:1:0",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "33660:3:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "33650:14:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<",
                                          "rightExpression": {
                                            "baseExpression": {
                                              "id": 1887,
                                              "name": "_tokenIds",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1808,
                                              "src": "33667:9:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 1889,
                                            "indexExpression": {
                                              "id": 1888,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1872,
                                              "src": "33677:1:0",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "33667:12:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "33650:29:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "4e696674797377617045786368616e6765235f676574546f6b656e52657365727665733a20554e534f525445445f4f525f4455504c49434154455f544f4b454e5f494453",
                                          "id": 1891,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "33681:70:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_3c92fb0012d8f7f599e7edb6764fcce8419a8f2d98a6433110bcd3a46a32fae1",
                                            "typeString": "literal_string \"NiftyswapExchange#_getTokenReserves: UNSORTED_OR_DUPLICATE_TOKEN_IDS\""
                                          },
                                          "value": "NiftyswapExchange#_getTokenReserves: UNSORTED_OR_DUPLICATE_TOKEN_IDS"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_3c92fb0012d8f7f599e7edb6764fcce8419a8f2d98a6433110bcd3a46a32fae1",
                                            "typeString": "literal_string \"NiftyswapExchange#_getTokenReserves: UNSORTED_OR_DUPLICATE_TOKEN_IDS\""
                                          }
                                        ],
                                        "id": 1881,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "33642:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 1892,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "33642:110:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 1893,
                                    "nodeType": "ExpressionStatement",
                                    "src": "33642:110:0"
                                  },
                                  {
                                    "expression": {
                                      "id": 1901,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 1894,
                                          "name": "thisAddressArray",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1855,
                                          "src": "33762:16:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                            "typeString": "address[] memory"
                                          }
                                        },
                                        "id": 1896,
                                        "indexExpression": {
                                          "id": 1895,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1872,
                                          "src": "33779:1:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "33762:19:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 1899,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -28,
                                            "src": "33792:4:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                              "typeString": "contract NiftyswapExchange"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                              "typeString": "contract NiftyswapExchange"
                                            }
                                          ],
                                          "id": 1898,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "33784:7:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 1897,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "33784:7:0",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 1900,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "33784:13:0",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "33762:35:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 1902,
                                    "nodeType": "ExpressionStatement",
                                    "src": "33762:35:0"
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1877,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 1875,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1872,
                                  "src": "33614:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 1876,
                                  "name": "nTokens",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1815,
                                  "src": "33618:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33614:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 1904,
                              "initializationExpression": {
                                "assignments": [
                                  1872
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 1872,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1904,
                                    "src": "33599:9:0",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 1871,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "33599:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 1874,
                                "initialValue": {
                                  "hexValue": "31",
                                  "id": 1873,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "33611:1:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "33599:13:0"
                              },
                              "loopExpression": {
                                "expression": {
                                  "id": 1879,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "33627:3:0",
                                  "subExpression": {
                                    "id": 1878,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1872,
                                    "src": "33627:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 1880,
                                "nodeType": "ExpressionStatement",
                                "src": "33627:3:0"
                              },
                              "nodeType": "ForStatement",
                              "src": "33594:212:0"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1907,
                                    "name": "thisAddressArray",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1855,
                                    "src": "33841:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  {
                                    "id": 1908,
                                    "name": "_tokenIds",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1808,
                                    "src": "33859:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  ],
                                  "expression": {
                                    "id": 1905,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 20,
                                    "src": "33820:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC1155_$3875",
                                      "typeString": "contract IERC1155"
                                    }
                                  },
                                  "id": 1906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOfBatch",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3856,
                                  "src": "33820:20:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (address[] memory,uint256[] memory) view external returns (uint256[] memory)"
                                  }
                                },
                                "id": 1909,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33820:49:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "functionReturnParameters": 1813,
                              "id": 1910,
                              "nodeType": "Return",
                              "src": "33813:56:0"
                            }
                          ]
                        },
                        "id": 1912,
                        "nodeType": "IfStatement",
                        "src": "33214:662:0",
                        "trueBody": {
                          "id": 1850,
                          "nodeType": "Block",
                          "src": "33232:164:0",
                          "statements": [
                            {
                              "assignments": [
                                1826
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 1826,
                                  "mutability": "mutable",
                                  "name": "tokenReserves",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 1850,
                                  "src": "33240:30:0",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[]"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1824,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "33240:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1825,
                                    "nodeType": "ArrayTypeName",
                                    "src": "33240:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[]"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 1832,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "hexValue": "31",
                                    "id": 1830,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33287:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "id": 1829,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "33273:13:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256) pure returns (uint256[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 1827,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "33277:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 1828,
                                    "nodeType": "ArrayTypeName",
                                    "src": "33277:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                      "typeString": "uint256[]"
                                    }
                                  }
                                },
                                "id": 1831,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "33273:16:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "33240:49:0"
                            },
                            {
                              "expression": {
                                "id": 1846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 1833,
                                    "name": "tokenReserves",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1826,
                                    "src": "33297:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 1835,
                                  "indexExpression": {
                                    "hexValue": "30",
                                    "id": 1834,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "33311:1:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "33297:16:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 1840,
                                          "name": "this",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -28,
                                          "src": "33340:4:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                            "typeString": "contract NiftyswapExchange"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                            "typeString": "contract NiftyswapExchange"
                                          }
                                        ],
                                        "id": 1839,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "33332:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 1838,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "33332:7:0",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 1841,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "33332:13:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "baseExpression": {
                                        "id": 1842,
                                        "name": "_tokenIds",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1808,
                                        "src": "33347:9:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 1844,
                                      "indexExpression": {
                                        "hexValue": "30",
                                        "id": 1843,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "33357:1:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "33347:12:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "id": 1836,
                                      "name": "token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 20,
                                      "src": "33316:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC1155_$3875",
                                        "typeString": "contract IERC1155"
                                      }
                                    },
                                    "id": 1837,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3843,
                                    "src": "33316:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (address,uint256) view external returns (uint256)"
                                    }
                                  },
                                  "id": 1845,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "33316:44:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "33297:63:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1847,
                              "nodeType": "ExpressionStatement",
                              "src": "33297:63:0"
                            },
                            {
                              "expression": {
                                "id": 1848,
                                "name": "tokenReserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1826,
                                "src": "33375:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "functionReturnParameters": 1813,
                              "id": 1849,
                              "nodeType": "Return",
                              "src": "33368:20:0"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1805,
                    "nodeType": "StructuredDocumentation",
                    "src": "32524:465:0",
                    "text": " @notice Return Token reserves for given Token ids\n @dev Assumes that ids are sorted from lowest to highest with no duplicates.\n      This assumption allows for checking the token reserves only once, otherwise\n      token reserves need to be re-checked individually or would have to do more expensive\n      duplication checks.\n @param _tokenIds Array of IDs to query their Reserve balance.\n @return Array of Token ids' reserves"
                  },
                  "id": 1914,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getTokenReserves",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1809,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1808,
                        "mutability": "mutable",
                        "name": "_tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 1914,
                        "src": "33024:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1806,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "33024:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1807,
                          "nodeType": "ArrayTypeName",
                          "src": "33024:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33018:33:0"
                  },
                  "returnParameters": {
                    "id": 1813,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1812,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1914,
                        "src": "33079:16:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1810,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "33079:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1811,
                          "nodeType": "ArrayTypeName",
                          "src": "33079:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33078:18:0"
                  },
                  "scope": 1946,
                  "src": "32992:888:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    4811
                  ],
                  "body": {
                    "id": 1944,
                    "nodeType": "Block",
                    "src": "34419:183:0",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1923,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1917,
                                "src": "34433:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1925,
                                      "name": "IERC165",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3965,
                                      "src": "34453:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC165_$3965_$",
                                        "typeString": "type(contract IERC165)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC165_$3965_$",
                                        "typeString": "type(contract IERC165)"
                                      }
                                    ],
                                    "id": 1924,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "34448:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 1926,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "34448:13:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$3965",
                                    "typeString": "type(contract IERC165)"
                                  }
                                },
                                "id": 1927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "34448:25:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "34433:40:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 1934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 1929,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1917,
                                "src": "34483:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 1931,
                                      "name": "IERC1155",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3875,
                                      "src": "34503:8:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                        "typeString": "type(contract IERC1155)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                        "typeString": "type(contract IERC1155)"
                                      }
                                    ],
                                    "id": 1930,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "34498:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 1932,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "34498:14:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$3875",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                },
                                "id": 1933,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "34498:26:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "34483:41:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "34433:91:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 1941,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 1936,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1917,
                              "src": "34535:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 1938,
                                    "name": "IERC1155TokenReceiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3930,
                                    "src": "34555:21:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3930_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3930_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  ],
                                  "id": 1937,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "34550:4:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 1939,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "34550:27:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155TokenReceiver_$3930",
                                  "typeString": "type(contract IERC1155TokenReceiver)"
                                }
                              },
                              "id": 1940,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "34550:39:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "34535:54:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "34433:156:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 1922,
                        "id": 1943,
                        "nodeType": "Return",
                        "src": "34425:164:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1915,
                    "nodeType": "StructuredDocumentation",
                    "src": "33884:449:0",
                    "text": " @notice Indicates whether a contract implements the `ERC1155TokenReceiver` functions and so can accept ERC1155 token types.\n @param  interfaceID The ERC-165 interface ID that is queried for support.s\n @dev This function MUST return true if it implements the ERC1155TokenReceiver interface and ERC-165 interface.\n      This function MUST NOT consume more thsan 5,000 gas.\n @return Whether a given interface is supported"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 1945,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1919,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "34390:8:0"
                  },
                  "parameters": {
                    "id": 1918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1917,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nodeType": "VariableDeclaration",
                        "scope": 1945,
                        "src": "34363:18:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1916,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "34363:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34362:20:0"
                  },
                  "returnParameters": {
                    "id": 1922,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1921,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 1945,
                        "src": "34413:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1920,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "34413:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34412:6:0"
                  },
                  "scope": 1946,
                  "src": "34336:266:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 1947,
              "src": "1185:33420:0"
            }
          ],
          "src": "39:34567:0"
        },
        "id": 0
      },
      "contracts/exchange/NiftyswapFactory.sol": {
        "ast": {
          "absolutePath": "contracts/exchange/NiftyswapFactory.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155": [
              4812
            ],
            "ERC1155MintBurn": [
              5902
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "IERC165": [
              3965
            ],
            "INiftyswapExchange": [
              2238
            ],
            "INiftyswapFactory": [
              2273
            ],
            "NiftyswapExchange": [
              1946
            ],
            "NiftyswapFactory": [
              2022
            ],
            "ReentrancyGuard": [
              2332
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 2023,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1948,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:1"
            },
            {
              "absolutePath": "contracts/exchange/NiftyswapExchange.sol",
              "file": "./NiftyswapExchange.sol",
              "id": 1949,
              "nodeType": "ImportDirective",
              "scope": 2023,
              "sourceUnit": 1947,
              "src": "62:33:1",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "contracts/interfaces/INiftyswapFactory.sol",
              "file": "../interfaces/INiftyswapFactory.sol",
              "id": 1950,
              "nodeType": "ImportDirective",
              "scope": 2023,
              "sourceUnit": 2274,
              "src": "96:45:1",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 1951,
                    "name": "INiftyswapFactory",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2273,
                    "src": "173:17:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_INiftyswapFactory_$2273",
                      "typeString": "contract INiftyswapFactory"
                    }
                  },
                  "id": 1952,
                  "nodeType": "InheritanceSpecifier",
                  "src": "173:17:1"
                }
              ],
              "contractDependencies": [
                1946,
                2273
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 2022,
              "linearizedBaseContracts": [
                2022,
                2273
              ],
              "name": "NiftyswapFactory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    2272
                  ],
                  "constant": false,
                  "functionSelector": "1427474c",
                  "id": 1961,
                  "mutability": "mutable",
                  "name": "tokensToExchange",
                  "nodeType": "VariableDeclaration",
                  "overrides": {
                    "id": 1960,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "474:8:1"
                  },
                  "scope": 2022,
                  "src": "399:100:1",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$_$",
                    "typeString": "mapping(address => mapping(address => mapping(uint256 => address)))"
                  },
                  "typeName": {
                    "id": 1959,
                    "keyType": {
                      "id": 1953,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "407:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "399:67:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$_$",
                      "typeString": "mapping(address => mapping(address => mapping(uint256 => address)))"
                    },
                    "valueType": {
                      "id": 1958,
                      "keyType": {
                        "id": 1954,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "426:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "418:47:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                        "typeString": "mapping(address => mapping(uint256 => address))"
                      },
                      "valueType": {
                        "id": 1957,
                        "keyType": {
                          "id": 1955,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "445:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "437:27:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        },
                        "valueType": {
                          "id": 1956,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "456:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      }
                    }
                  },
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    2260
                  ],
                  "body": {
                    "id": 2020,
                    "nodeType": "Block",
                    "src": "987:479:1",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 1984,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 1973,
                                      "name": "tokensToExchange",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1961,
                                      "src": "1001:16:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$_$",
                                        "typeString": "mapping(address => mapping(address => mapping(uint256 => address)))"
                                      }
                                    },
                                    "id": 1975,
                                    "indexExpression": {
                                      "id": 1974,
                                      "name": "_token",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1964,
                                      "src": "1018:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1001:24:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => address))"
                                    }
                                  },
                                  "id": 1977,
                                  "indexExpression": {
                                    "id": 1976,
                                    "name": "_currency",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1966,
                                    "src": "1026:9:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1001:35:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 1979,
                                "indexExpression": {
                                  "id": 1978,
                                  "name": "_currencyID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1968,
                                  "src": "1037:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1001:48:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "307830",
                                    "id": 1982,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1061:3:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0x0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 1981,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1053:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 1980,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1053:7:1",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1983,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1053:12:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1001:64:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4e6966747973776170466163746f72792363726561746545786368616e67653a2045584348414e47455f414c52454144595f43524541544544",
                              "id": 1985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1067:59:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_117b7762a40b20e2c7fe61aa02a3e3745c90f380dc7d108c7f9287eb1a09e378",
                                "typeString": "literal_string \"NiftyswapFactory#createExchange: EXCHANGE_ALREADY_CREATED\""
                              },
                              "value": "NiftyswapFactory#createExchange: EXCHANGE_ALREADY_CREATED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_117b7762a40b20e2c7fe61aa02a3e3745c90f380dc7d108c7f9287eb1a09e378",
                                "typeString": "literal_string \"NiftyswapFactory#createExchange: EXCHANGE_ALREADY_CREATED\""
                              }
                            ],
                            "id": 1972,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "993:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 1986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "993:134:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1987,
                        "nodeType": "ExpressionStatement",
                        "src": "993:134:1"
                      },
                      {
                        "assignments": [
                          1989
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1989,
                            "mutability": "mutable",
                            "name": "exchange",
                            "nodeType": "VariableDeclaration",
                            "scope": 2020,
                            "src": "1170:26:1",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                              "typeString": "contract NiftyswapExchange"
                            },
                            "typeName": {
                              "id": 1988,
                              "name": "NiftyswapExchange",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 1946,
                              "src": "1170:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                "typeString": "contract NiftyswapExchange"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1996,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 1992,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1964,
                              "src": "1221:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1993,
                              "name": "_currency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1966,
                              "src": "1229:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1994,
                              "name": "_currencyID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1968,
                              "src": "1240:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "1199:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_contract$_NiftyswapExchange_$1946_$",
                              "typeString": "function (address,address,uint256) returns (contract NiftyswapExchange)"
                            },
                            "typeName": {
                              "id": 1990,
                              "name": "NiftyswapExchange",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 1946,
                              "src": "1203:17:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                "typeString": "contract NiftyswapExchange"
                              }
                            }
                          },
                          "id": 1995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1199:53:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                            "typeString": "contract NiftyswapExchange"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1170:82:1"
                      },
                      {
                        "expression": {
                          "id": 2008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 1997,
                                  "name": "tokensToExchange",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1961,
                                  "src": "1301:16:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$_$",
                                    "typeString": "mapping(address => mapping(address => mapping(uint256 => address)))"
                                  }
                                },
                                "id": 2001,
                                "indexExpression": {
                                  "id": 1998,
                                  "name": "_token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1964,
                                  "src": "1318:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "1301:24:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_address_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => address))"
                                }
                              },
                              "id": 2002,
                              "indexExpression": {
                                "id": 1999,
                                "name": "_currency",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1966,
                                "src": "1326:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1301:35:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 2003,
                            "indexExpression": {
                              "id": 2000,
                              "name": "_currencyID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1968,
                              "src": "1337:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1301:48:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 2006,
                                "name": "exchange",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1989,
                                "src": "1360:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                  "typeString": "contract NiftyswapExchange"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                  "typeString": "contract NiftyswapExchange"
                                }
                              ],
                              "id": 2005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1352:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2004,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1352:7:1",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1352:17:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1301:68:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2009,
                        "nodeType": "ExpressionStatement",
                        "src": "1301:68:1"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 2011,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1964,
                              "src": "1411:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2012,
                              "name": "_currency",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1966,
                              "src": "1419:9:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2013,
                              "name": "_currencyID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1968,
                              "src": "1430:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 2016,
                                  "name": "exchange",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1989,
                                  "src": "1451:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_NiftyswapExchange_$1946",
                                    "typeString": "contract NiftyswapExchange"
                                  }
                                ],
                                "id": 2015,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1443:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2014,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1443:7:1",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2017,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1443:17:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2010,
                            "name": "NewExchange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2250,
                            "src": "1399:11:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (address,address,uint256,address)"
                            }
                          },
                          "id": 2018,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1399:62:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2019,
                        "nodeType": "EmitStatement",
                        "src": "1394:67:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1962,
                    "nodeType": "StructuredDocumentation",
                    "src": "625:263:1",
                    "text": " @notice Creates a NiftySwap Exchange for given token contract\n @param _token      The address of the ERC-1155 token contract\n @param _currency   The address of the currency token contract\n @param _currencyID The id of the currency token"
                  },
                  "functionSelector": "8359289c",
                  "id": 2021,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createExchange",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1970,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "978:8:1"
                  },
                  "parameters": {
                    "id": 1969,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1964,
                        "mutability": "mutable",
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 2021,
                        "src": "915:14:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1963,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "915:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1966,
                        "mutability": "mutable",
                        "name": "_currency",
                        "nodeType": "VariableDeclaration",
                        "scope": 2021,
                        "src": "931:17:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1965,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "931:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1968,
                        "mutability": "mutable",
                        "name": "_currencyID",
                        "nodeType": "VariableDeclaration",
                        "scope": 2021,
                        "src": "950:19:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1967,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "950:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "914:56:1"
                  },
                  "returnParameters": {
                    "id": 1971,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "987:0:1"
                  },
                  "scope": 2022,
                  "src": "891:575:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 2023,
              "src": "144:1325:1"
            }
          ],
          "src": "39:1431:1"
        },
        "id": 1
      },
      "contracts/interfaces/INiftyswapExchange.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/INiftyswapExchange.sol",
          "exportedSymbols": {
            "INiftyswapExchange": [
              2238
            ]
          },
          "id": 2239,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2024,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:2"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 2238,
              "linearizedBaseContracts": [
                2238
              ],
              "name": "INiftyswapExchange",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 2039,
                  "name": "TokensPurchase",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2038,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2026,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "buyer",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "244:21:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2025,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "244:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2028,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "271:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2027,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "271:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2031,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokensBoughtIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "302:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2029,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "302:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2030,
                          "nodeType": "ArrayTypeName",
                          "src": "302:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2034,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokensBoughtAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "333:29:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2032,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "333:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2033,
                          "nodeType": "ArrayTypeName",
                          "src": "333:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2037,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "currencySoldAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2039,
                        "src": "368:29:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2035,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "368:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2036,
                          "nodeType": "ArrayTypeName",
                          "src": "368:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "238:163:2"
                  },
                  "src": "218:184:2"
                },
                {
                  "anonymous": false,
                  "id": 2054,
                  "name": "CurrencyPurchase",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2053,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2041,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "buyer",
                        "nodeType": "VariableDeclaration",
                        "scope": 2054,
                        "src": "434:21:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2040,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "434:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2043,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 2054,
                        "src": "461:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2042,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "461:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2046,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokensSoldIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 2054,
                        "src": "492:23:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2044,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "492:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2045,
                          "nodeType": "ArrayTypeName",
                          "src": "492:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2049,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokensSoldAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2054,
                        "src": "521:27:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2047,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "521:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2048,
                          "nodeType": "ArrayTypeName",
                          "src": "521:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2052,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "currencyBoughtAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2054,
                        "src": "554:31:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2050,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "554:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2051,
                          "nodeType": "ArrayTypeName",
                          "src": "554:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "428:161:2"
                  },
                  "src": "406:184:2"
                },
                {
                  "anonymous": false,
                  "id": 2067,
                  "name": "LiquidityAdded",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2066,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2056,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "scope": 2067,
                        "src": "620:24:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2055,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "620:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2059,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 2067,
                        "src": "650:18:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2057,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "650:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2058,
                          "nodeType": "ArrayTypeName",
                          "src": "650:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2062,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokenAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2067,
                        "src": "674:22:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2060,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "674:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2061,
                          "nodeType": "ArrayTypeName",
                          "src": "674:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2065,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "currencyAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2067,
                        "src": "702:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2063,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "702:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2064,
                          "nodeType": "ArrayTypeName",
                          "src": "702:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "614:117:2"
                  },
                  "src": "594:138:2"
                },
                {
                  "anonymous": false,
                  "id": 2080,
                  "name": "LiquidityRemoved",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2079,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2069,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "provider",
                        "nodeType": "VariableDeclaration",
                        "scope": 2080,
                        "src": "764:24:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2068,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "764:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2072,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokenIds",
                        "nodeType": "VariableDeclaration",
                        "scope": 2080,
                        "src": "794:18:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2070,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "794:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2071,
                          "nodeType": "ArrayTypeName",
                          "src": "794:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2075,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "tokenAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2080,
                        "src": "818:22:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2073,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "818:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2074,
                          "nodeType": "ArrayTypeName",
                          "src": "818:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2078,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "currencyAmounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2080,
                        "src": "846:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2076,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "846:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2077,
                          "nodeType": "ArrayTypeName",
                          "src": "846:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "758:117:2"
                  },
                  "src": "736:140:2"
                },
                {
                  "canonicalName": "INiftyswapExchange.BuyTokensObj",
                  "id": 2091,
                  "members": [
                    {
                      "constant": false,
                      "id": 2082,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nodeType": "VariableDeclaration",
                      "scope": 2091,
                      "src": "931:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2081,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "931:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2085,
                      "mutability": "mutable",
                      "name": "tokensBoughtIDs",
                      "nodeType": "VariableDeclaration",
                      "scope": 2091,
                      "src": "993:25:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2083,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "993:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2084,
                        "nodeType": "ArrayTypeName",
                        "src": "993:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2088,
                      "mutability": "mutable",
                      "name": "tokensBoughtAmounts",
                      "nodeType": "VariableDeclaration",
                      "scope": 2091,
                      "src": "1048:29:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2086,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1048:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2087,
                        "nodeType": "ArrayTypeName",
                        "src": "1048:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2090,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2091,
                      "src": "1121:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2089,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1121:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "BuyTokensObj",
                  "nodeType": "StructDefinition",
                  "scope": 2238,
                  "src": "905:302:2",
                  "visibility": "public"
                },
                {
                  "canonicalName": "INiftyswapExchange.SellTokensObj",
                  "id": 2098,
                  "members": [
                    {
                      "constant": false,
                      "id": 2093,
                      "mutability": "mutable",
                      "name": "recipient",
                      "nodeType": "VariableDeclaration",
                      "scope": 2098,
                      "src": "1238:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2092,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1238:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2095,
                      "mutability": "mutable",
                      "name": "minCurrency",
                      "nodeType": "VariableDeclaration",
                      "scope": 2098,
                      "src": "1292:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2094,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1292:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2097,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2098,
                      "src": "1383:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2096,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1383:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "SellTokensObj",
                  "nodeType": "StructDefinition",
                  "scope": 2238,
                  "src": "1211:248:2",
                  "visibility": "public"
                },
                {
                  "canonicalName": "INiftyswapExchange.AddLiquidityObj",
                  "id": 2104,
                  "members": [
                    {
                      "constant": false,
                      "id": 2101,
                      "mutability": "mutable",
                      "name": "maxCurrency",
                      "nodeType": "VariableDeclaration",
                      "scope": 2104,
                      "src": "1492:21:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2099,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1492:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2100,
                        "nodeType": "ArrayTypeName",
                        "src": "1492:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2103,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2104,
                      "src": "1572:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2102,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1572:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "AddLiquidityObj",
                  "nodeType": "StructDefinition",
                  "scope": 2238,
                  "src": "1463:187:2",
                  "visibility": "public"
                },
                {
                  "canonicalName": "INiftyswapExchange.RemoveLiquidityObj",
                  "id": 2113,
                  "members": [
                    {
                      "constant": false,
                      "id": 2107,
                      "mutability": "mutable",
                      "name": "minCurrency",
                      "nodeType": "VariableDeclaration",
                      "scope": 2113,
                      "src": "1686:21:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2105,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1686:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2106,
                        "nodeType": "ArrayTypeName",
                        "src": "1686:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2110,
                      "mutability": "mutable",
                      "name": "minTokens",
                      "nodeType": "VariableDeclaration",
                      "scope": 2113,
                      "src": "1755:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2108,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1755:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2109,
                        "nodeType": "ArrayTypeName",
                        "src": "1755:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2112,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "scope": 2113,
                      "src": "1822:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2111,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1822:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "RemoveLiquidityObj",
                  "nodeType": "StructDefinition",
                  "scope": 2238,
                  "src": "1654:246:2",
                  "visibility": "public"
                },
                {
                  "documentation": {
                    "id": 2114,
                    "nodeType": "StructuredDocumentation",
                    "src": "2025:774:2",
                    "text": " @notice Handle which method is being called on Token transfer\n @dev `_data` must be encoded as follow: abi.encode(bytes4, MethodObj)\n   where bytes4 argument is the MethodObj object signature passed as defined\n   in the `Signatures for onReceive control logic` section above\n @param _operator The address which called the `safeTransferFrom` function\n @param _from     The address which previously owned the token\n @param _id       The id of the token being transferred\n @param _amount   The amount of tokens being transferred\n @param _data     Method signature and corresponding encoded arguments for method to call on *this* contract\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 2129,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2125,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2116,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 2129,
                        "src": "2829:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2115,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2829:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2118,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2129,
                        "src": "2848:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2117,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2848:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2120,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2129,
                        "src": "2863:11:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2863:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2122,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2129,
                        "src": "2876:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2121,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2876:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2124,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2129,
                        "src": "2893:20:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2123,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2893:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2828:86:2"
                  },
                  "returnParameters": {
                    "id": 2128,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2127,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2129,
                        "src": "2932:6:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2126,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2932:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2931:8:2"
                  },
                  "scope": 2238,
                  "src": "2802:138:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2130,
                    "nodeType": "StructuredDocumentation",
                    "src": "2944:734:2",
                    "text": " @notice Handle which method is being called on transfer\n @dev `_data` must be encoded as follow: abi.encode(bytes4, MethodObj)\n   where bytes4 argument is the MethodObj object signature passed as defined\n   in the `Signatures for onReceive control logic` section above\n @param _from     The address which previously owned the Token\n @param _ids      An array containing ids of each Token being transferred\n @param _amounts  An array containing amounts of each Token being transferred\n @param _data     Method signature and corresponding encoded arguments for method to call on *this* contract\n @return bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\")"
                  },
                  "functionSelector": "bc197c81",
                  "id": 2147,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2143,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2132,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2147,
                        "src": "3713:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2131,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3713:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2134,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2147,
                        "src": "3722:13:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2133,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3722:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2137,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2147,
                        "src": "3737:23:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2135,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3737:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2136,
                          "nodeType": "ArrayTypeName",
                          "src": "3737:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2140,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2147,
                        "src": "3762:27:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2138,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3762:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2139,
                          "nodeType": "ArrayTypeName",
                          "src": "3762:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2142,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2147,
                        "src": "3791:20:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2141,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3791:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3712:100:2"
                  },
                  "returnParameters": {
                    "id": 2146,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2145,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2147,
                        "src": "3830:6:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2144,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3830:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3829:8:2"
                  },
                  "scope": 2238,
                  "src": "3681:157:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2148,
                    "nodeType": "StructuredDocumentation",
                    "src": "3964:379:2",
                    "text": " @dev Pricing function used for converting between currency token to Tokens.\n @param _assetBoughtAmount  Amount of Tokens being bought.\n @param _assetSoldReserve   Amount of currency tokens in exchange reserves.\n @param _assetBoughtReserve Amount of Tokens (output type) in exchange reserves.\n @return Amount of currency tokens to send to Niftyswap."
                  },
                  "functionSelector": "fca16c3b",
                  "id": 2159,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getBuyPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2155,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2150,
                        "mutability": "mutable",
                        "name": "_assetBoughtAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2159,
                        "src": "4367:26:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2149,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4367:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2152,
                        "mutability": "mutable",
                        "name": "_assetSoldReserve",
                        "nodeType": "VariableDeclaration",
                        "scope": 2159,
                        "src": "4395:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2151,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4395:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2154,
                        "mutability": "mutable",
                        "name": "_assetBoughtReserve",
                        "nodeType": "VariableDeclaration",
                        "scope": 2159,
                        "src": "4422:27:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2153,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4422:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4366:84:2"
                  },
                  "returnParameters": {
                    "id": 2158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2157,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2159,
                        "src": "4474:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2156,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4474:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4473:9:2"
                  },
                  "scope": 2238,
                  "src": "4346:137:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2160,
                    "nodeType": "StructuredDocumentation",
                    "src": "4487:360:2",
                    "text": " @dev Pricing function used for converting Tokens to currency token.\n @param _assetSoldAmount    Amount of Tokens being sold.\n @param _assetSoldReserve   Amount of Tokens in exchange reserves.\n @param _assetBoughtReserve Amount of currency tokens in exchange reserves.\n @return Amount of currency tokens to receive from Niftyswap."
                  },
                  "functionSelector": "6ee8e134",
                  "id": 2171,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getSellPrice",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2167,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2162,
                        "mutability": "mutable",
                        "name": "_assetSoldAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2171,
                        "src": "4872:24:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2161,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4872:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2164,
                        "mutability": "mutable",
                        "name": "_assetSoldReserve",
                        "nodeType": "VariableDeclaration",
                        "scope": 2171,
                        "src": "4897:25:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2163,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4897:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2166,
                        "mutability": "mutable",
                        "name": "_assetBoughtReserve",
                        "nodeType": "VariableDeclaration",
                        "scope": 2171,
                        "src": "4924:27:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2165,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4924:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4871:81:2"
                  },
                  "returnParameters": {
                    "id": 2170,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2169,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2171,
                        "src": "4976:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2168,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4976:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4975:9:2"
                  },
                  "scope": 2238,
                  "src": "4850:135:2",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2172,
                    "nodeType": "StructuredDocumentation",
                    "src": "4989:204:2",
                    "text": " @notice Get amount of currency in reserve for each Token _id in _ids\n @param _ids Array of ID sto query currency reserve of\n @return amount of currency in reserve for each Token _id"
                  },
                  "functionSelector": "209b96c5",
                  "id": 2181,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrencyReserves",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2175,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2181,
                        "src": "5225:23:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2173,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5225:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2174,
                          "nodeType": "ArrayTypeName",
                          "src": "5225:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5224:25:2"
                  },
                  "returnParameters": {
                    "id": 2180,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2179,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2181,
                        "src": "5273:16:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2177,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5273:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2178,
                          "nodeType": "ArrayTypeName",
                          "src": "5273:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5272:18:2"
                  },
                  "scope": 2238,
                  "src": "5196:95:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2182,
                    "nodeType": "StructuredDocumentation",
                    "src": "5295:295:2",
                    "text": " @notice Return price for `currency => Token _id` trades with an exact token amount.\n @param _ids          Array of ID of tokens bought.\n @param _tokensBought Amount of Tokens bought.\n @return Amount of currency needed to buy Tokens in _ids for amounts in _tokensBought"
                  },
                  "functionSelector": "be571468",
                  "id": 2194,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPrice_currencyToToken",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2189,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2185,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2194,
                        "src": "5627:23:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2183,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5627:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2184,
                          "nodeType": "ArrayTypeName",
                          "src": "5627:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2188,
                        "mutability": "mutable",
                        "name": "_tokensBought",
                        "nodeType": "VariableDeclaration",
                        "scope": 2194,
                        "src": "5652:32:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2186,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5652:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2187,
                          "nodeType": "ArrayTypeName",
                          "src": "5652:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5626:59:2"
                  },
                  "returnParameters": {
                    "id": 2193,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2192,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2194,
                        "src": "5709:16:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2190,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5709:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2191,
                          "nodeType": "ArrayTypeName",
                          "src": "5709:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5708:18:2"
                  },
                  "scope": 2238,
                  "src": "5593:134:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2195,
                    "nodeType": "StructuredDocumentation",
                    "src": "5731:305:2",
                    "text": " @notice Return price for `Token _id => currency` trades with an exact token amount.\n @param _ids        Array of IDs  token sold.\n @param _tokensSold Array of amount of each Token sold.\n @return Amount of currency that can be bought for Tokens in _ids for amounts in _tokensSold"
                  },
                  "functionSelector": "863ed300",
                  "id": 2207,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPrice_tokenToCurrency",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2202,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2198,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2207,
                        "src": "6073:23:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2196,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6073:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2197,
                          "nodeType": "ArrayTypeName",
                          "src": "6073:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2201,
                        "mutability": "mutable",
                        "name": "_tokensSold",
                        "nodeType": "VariableDeclaration",
                        "scope": 2207,
                        "src": "6098:30:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2199,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6098:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2200,
                          "nodeType": "ArrayTypeName",
                          "src": "6098:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6072:57:2"
                  },
                  "returnParameters": {
                    "id": 2206,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2205,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2207,
                        "src": "6153:16:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2203,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6153:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2204,
                          "nodeType": "ArrayTypeName",
                          "src": "6153:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6152:18:2"
                  },
                  "scope": 2238,
                  "src": "6039:132:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2208,
                    "nodeType": "StructuredDocumentation",
                    "src": "6175:167:2",
                    "text": " @notice Get total supply of liquidity tokens\n @param _ids ID of the Tokens\n @return The total supply of each liquidity token id provided in _ids"
                  },
                  "functionSelector": "2bef5e38",
                  "id": 2217,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2212,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2211,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2217,
                        "src": "6369:23:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2209,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6369:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2210,
                          "nodeType": "ArrayTypeName",
                          "src": "6369:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6368:25:2"
                  },
                  "returnParameters": {
                    "id": 2216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2215,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2217,
                        "src": "6417:16:2",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2213,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6417:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2214,
                          "nodeType": "ArrayTypeName",
                          "src": "6417:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6416:18:2"
                  },
                  "scope": 2238,
                  "src": "6345:90:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2218,
                    "nodeType": "StructuredDocumentation",
                    "src": "6439:70:2",
                    "text": " @return Address of Token that is sold on this exchange."
                  },
                  "functionSelector": "10fe9ae8",
                  "id": 2223,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTokenAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2219,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6536:2:2"
                  },
                  "returnParameters": {
                    "id": 2222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2221,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2223,
                        "src": "6562:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2220,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6562:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6561:9:2"
                  },
                  "scope": 2238,
                  "src": "6512:59:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2224,
                    "nodeType": "StructuredDocumentation",
                    "src": "6575:105:2",
                    "text": " @return Address of the currency contract that is used as currency and its corresponding id"
                  },
                  "functionSelector": "46adf5ca",
                  "id": 2231,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCurrencyInfo",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2225,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6707:2:2"
                  },
                  "returnParameters": {
                    "id": 2230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2227,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2231,
                        "src": "6733:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2226,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6733:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2229,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2231,
                        "src": "6742:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2228,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6742:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6732:18:2"
                  },
                  "scope": 2238,
                  "src": "6683:68:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2232,
                    "nodeType": "StructuredDocumentation",
                    "src": "6755:69:2",
                    "text": " @return Address of factory that created this exchange."
                  },
                  "functionSelector": "a9c2e36c",
                  "id": 2237,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getFactoryAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2233,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6853:2:2"
                  },
                  "returnParameters": {
                    "id": 2236,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2235,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2237,
                        "src": "6879:7:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2234,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6879:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6878:9:2"
                  },
                  "scope": 2238,
                  "src": "6827:61:2",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2239,
              "src": "63:6828:2"
            }
          ],
          "src": "39:6852:2"
        },
        "id": 2
      },
      "contracts/interfaces/INiftyswapFactory.sol": {
        "ast": {
          "absolutePath": "contracts/interfaces/INiftyswapFactory.sol",
          "exportedSymbols": {
            "INiftyswapFactory": [
              2273
            ]
          },
          "id": 2274,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2240,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:3"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 2273,
              "linearizedBaseContracts": [
                2273
              ],
              "name": "INiftyswapFactory",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 2250,
                  "name": "NewExchange",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 2249,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2242,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 2250,
                        "src": "235:21:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2241,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "235:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2244,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "currency",
                        "nodeType": "VariableDeclaration",
                        "scope": 2250,
                        "src": "258:24:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2243,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "258:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2246,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "currencyID",
                        "nodeType": "VariableDeclaration",
                        "scope": 2250,
                        "src": "284:26:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2245,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "284:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2248,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "exchange",
                        "nodeType": "VariableDeclaration",
                        "scope": 2250,
                        "src": "312:16:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2247,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "312:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "234:95:3"
                  },
                  "src": "217:113:3"
                },
                {
                  "documentation": {
                    "id": 2251,
                    "nodeType": "StructuredDocumentation",
                    "src": "456:263:3",
                    "text": " @notice Creates a NiftySwap Exchange for given token contract\n @param _token      The address of the ERC-1155 token contract\n @param _currency   The address of the currency token contract\n @param _currencyID The id of the currency token"
                  },
                  "functionSelector": "8359289c",
                  "id": 2260,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createExchange",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2253,
                        "mutability": "mutable",
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 2260,
                        "src": "746:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2252,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "746:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2255,
                        "mutability": "mutable",
                        "name": "_currency",
                        "nodeType": "VariableDeclaration",
                        "scope": 2260,
                        "src": "762:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2254,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "762:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2257,
                        "mutability": "mutable",
                        "name": "_currencyID",
                        "nodeType": "VariableDeclaration",
                        "scope": 2260,
                        "src": "781:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2256,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "781:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "745:56:3"
                  },
                  "returnParameters": {
                    "id": 2259,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "810:0:3"
                  },
                  "scope": 2273,
                  "src": "722:89:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2261,
                    "nodeType": "StructuredDocumentation",
                    "src": "815:278:3",
                    "text": " @notice Return address of exchange for corresponding ERC-1155 token contract\n @param _token      The address of the ERC-1155 token contract\n @param _currency   The address of the currency token contract\n @param _currencyID The id of the currency token"
                  },
                  "functionSelector": "1427474c",
                  "id": 2272,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "tokensToExchange",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2268,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2263,
                        "mutability": "mutable",
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 2272,
                        "src": "1122:14:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2262,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1122:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2265,
                        "mutability": "mutable",
                        "name": "_currency",
                        "nodeType": "VariableDeclaration",
                        "scope": 2272,
                        "src": "1138:17:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2264,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1138:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2267,
                        "mutability": "mutable",
                        "name": "_currencyID",
                        "nodeType": "VariableDeclaration",
                        "scope": 2272,
                        "src": "1157:19:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2266,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1157:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1121:56:3"
                  },
                  "returnParameters": {
                    "id": 2271,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2270,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2272,
                        "src": "1201:7:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2269,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1201:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1200:9:3"
                  },
                  "scope": 2273,
                  "src": "1096:114:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2274,
              "src": "63:1150:3"
            }
          ],
          "src": "39:1174:3"
        },
        "id": 3
      },
      "contracts/mocks/ERC1155Mock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/ERC1155Mock.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155": [
              4812
            ],
            "ERC1155Metadata": [
              5643
            ],
            "ERC1155MintBurn": [
              5902
            ],
            "ERC1155MintBurnMock": [
              4156
            ],
            "ERC1155Mock": [
              2280
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155Metadata": [
              3892
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 2281,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2275,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:4"
            },
            {
              "id": 2276,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "62:33:4"
            },
            {
              "absolutePath": "multi-token-standard/contracts/mocks/ERC1155MintBurnMock.sol",
              "file": "multi-token-standard/contracts/mocks/ERC1155MintBurnMock.sol",
              "id": 2277,
              "nodeType": "ImportDirective",
              "scope": 2281,
              "sourceUnit": 4157,
              "src": "96:70:4",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2278,
                    "name": "ERC1155MintBurnMock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4156,
                    "src": "193:19:4",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155MintBurnMock_$4156",
                      "typeString": "contract ERC1155MintBurnMock"
                    }
                  },
                  "id": 2279,
                  "nodeType": "InheritanceSpecifier",
                  "src": "193:19:4"
                }
              ],
              "contractDependencies": [
                3875,
                3892,
                4156,
                4812,
                5643,
                5902,
                7229
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 2280,
              "linearizedBaseContracts": [
                2280,
                4156,
                5643,
                5902,
                4812,
                7229,
                3892,
                3875
              ],
              "name": "ERC1155Mock",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 2281,
              "src": "169:48:4"
            }
          ],
          "src": "39:178:4"
        },
        "id": 4
      },
      "contracts/mocks/ERC1155PackedBalanceMock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/ERC1155PackedBalanceMock.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155Metadata": [
              5643
            ],
            "ERC1155MintBurnPackedBalance": [
              6205
            ],
            "ERC1155MintBurnPackedBalanceMock": [
              4269
            ],
            "ERC1155PackedBalance": [
              7182
            ],
            "ERC1155PackedBalanceMock": [
              2287
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155Metadata": [
              3892
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 2288,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2282,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:5"
            },
            {
              "id": 2283,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "62:33:5"
            },
            {
              "absolutePath": "multi-token-standard/contracts/mocks/ERC1155MintBurnPackedBalanceMock.sol",
              "file": "multi-token-standard/contracts/mocks/ERC1155MintBurnPackedBalanceMock.sol",
              "id": 2284,
              "nodeType": "ImportDirective",
              "scope": 2288,
              "sourceUnit": 4270,
              "src": "96:83:5",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2285,
                    "name": "ERC1155MintBurnPackedBalanceMock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4269,
                    "src": "219:32:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155MintBurnPackedBalanceMock_$4269",
                      "typeString": "contract ERC1155MintBurnPackedBalanceMock"
                    }
                  },
                  "id": 2286,
                  "nodeType": "InheritanceSpecifier",
                  "src": "219:32:5"
                }
              ],
              "contractDependencies": [
                3875,
                3892,
                4269,
                5643,
                6205,
                7182,
                7229
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 2287,
              "linearizedBaseContracts": [
                2287,
                4269,
                5643,
                6205,
                7182,
                7229,
                3892,
                3875
              ],
              "name": "ERC1155PackedBalanceMock",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 2288,
              "src": "182:74:5"
            }
          ],
          "src": "39:217:5"
        },
        "id": 5
      },
      "contracts/mocks/ERC20TokenMock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/ERC20TokenMock.sol",
          "exportedSymbols": {
            "ERC20": [
              3247
            ],
            "ERC20Mock": [
              3267
            ],
            "ERC20TokenMock": [
              2293
            ],
            "IERC20": [
              4035
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 2294,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2289,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:6"
            },
            {
              "absolutePath": "erc20-meta-token/contracts/mocks/ERC20Mock.sol",
              "file": "erc20-meta-token/contracts/mocks/ERC20Mock.sol",
              "id": 2290,
              "nodeType": "ImportDirective",
              "scope": 2294,
              "sourceUnit": 3268,
              "src": "62:56:6",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2291,
                    "name": "ERC20Mock",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3267,
                    "src": "147:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20Mock_$3267",
                      "typeString": "contract ERC20Mock"
                    }
                  },
                  "id": 2292,
                  "nodeType": "InheritanceSpecifier",
                  "src": "147:9:6"
                }
              ],
              "contractDependencies": [
                3247,
                3267,
                4035
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 2293,
              "linearizedBaseContracts": [
                2293,
                3267,
                3247,
                4035
              ],
              "name": "ERC20TokenMock",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 2294,
              "src": "120:41:6"
            }
          ],
          "src": "39:122:6"
        },
        "id": 6
      },
      "contracts/mocks/ERC20WrapperMock.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/ERC20WrapperMock.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155": [
              4812
            ],
            "ERC1155Meta": [
              5439
            ],
            "ERC1155MintBurn": [
              5902
            ],
            "ERC165": [
              7229
            ],
            "ERC20WrapperMock": [
              2300
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "IERC1271Wallet": [
              3953
            ],
            "IERC165": [
              3965
            ],
            "IERC20": [
              4035
            ],
            "LibBytes": [
              7292
            ],
            "LibEIP712": [
              7328
            ],
            "MetaERC20Wrapper": [
              3764
            ],
            "SafeMath": [
              7467
            ],
            "SignatureValidator": [
              7731
            ]
          },
          "id": 2301,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2295,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:7"
            },
            {
              "id": 2296,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "62:33:7"
            },
            {
              "absolutePath": "erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol",
              "file": "erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol",
              "id": 2297,
              "nodeType": "ImportDirective",
              "scope": 2301,
              "sourceUnit": 3765,
              "src": "96:65:7",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2298,
                    "name": "MetaERC20Wrapper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3764,
                    "src": "193:16:7",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_MetaERC20Wrapper_$3764",
                      "typeString": "contract MetaERC20Wrapper"
                    }
                  },
                  "id": 2299,
                  "nodeType": "InheritanceSpecifier",
                  "src": "193:16:7"
                }
              ],
              "contractDependencies": [
                3764,
                3875,
                4812,
                5439,
                5902,
                7229,
                7328,
                7731
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 2300,
              "linearizedBaseContracts": [
                2300,
                3764,
                5902,
                5439,
                7731,
                7328,
                4812,
                7229,
                3875
              ],
              "name": "ERC20WrapperMock",
              "nodeType": "ContractDefinition",
              "nodes": [],
              "scope": 2301,
              "src": "164:50:7"
            }
          ],
          "src": "39:175:7"
        },
        "id": 7
      },
      "contracts/utils/ReentrancyGuard.sol": {
        "ast": {
          "absolutePath": "contracts/utils/ReentrancyGuard.sol",
          "exportedSymbols": {
            "ReentrancyGuard": [
              2332
            ]
          },
          "id": 2333,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2302,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:8"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2303,
                "nodeType": "StructuredDocumentation",
                "src": "63:668:8",
                "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n _Since v2.5.0:_ this module is now much more gas efficient, given net gas\n metering changes introduced in the Istanbul hardfork."
              },
              "fullyImplemented": true,
              "id": 2332,
              "linearizedBaseContracts": [
                2332
              ],
              "name": "ReentrancyGuard",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 2305,
                  "mutability": "mutable",
                  "name": "_notEntered",
                  "nodeType": "VariableDeclaration",
                  "scope": 2332,
                  "src": "761:24:8",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2304,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "761:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 2312,
                    "nodeType": "Block",
                    "src": "805:417:8",
                    "statements": [
                      {
                        "expression": {
                          "id": 2310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2308,
                            "name": "_notEntered",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2305,
                            "src": "1199:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 2309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1213:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1199:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2311,
                        "nodeType": "ExpressionStatement",
                        "src": "1199:18:8"
                      }
                    ]
                  },
                  "id": 2313,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2306,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "802:2:8"
                  },
                  "returnParameters": {
                    "id": 2307,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "805:0:8"
                  },
                  "scope": 2332,
                  "src": "790:432:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2330,
                    "nodeType": "Block",
                    "src": "1605:376:8",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2317,
                              "name": "_notEntered",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2305,
                              "src": "1686:11:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5265656e7472616e637947756172643a207265656e7472616e742063616c6c",
                              "id": 2318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1699:33:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                                "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                              },
                              "value": "ReentrancyGuard: reentrant call"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ebf73bba305590e4764d5cb53b69bffd6d4d092d1a67551cb346f8cfcdab8619",
                                "typeString": "literal_string \"ReentrancyGuard: reentrant call\""
                              }
                            ],
                            "id": 2316,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1678:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1678:55:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2320,
                        "nodeType": "ExpressionStatement",
                        "src": "1678:55:8"
                      },
                      {
                        "expression": {
                          "id": 2323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2321,
                            "name": "_notEntered",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2305,
                            "src": "1800:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 2322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1814:5:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "1800:19:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2324,
                        "nodeType": "ExpressionStatement",
                        "src": "1800:19:8"
                      },
                      {
                        "id": 2325,
                        "nodeType": "PlaceholderStatement",
                        "src": "1826:1:8"
                      },
                      {
                        "expression": {
                          "id": 2328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2326,
                            "name": "_notEntered",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2305,
                            "src": "1958:11:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 2327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1972:4:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1958:18:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2329,
                        "nodeType": "ExpressionStatement",
                        "src": "1958:18:8"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2314,
                    "nodeType": "StructuredDocumentation",
                    "src": "1226:352:8",
                    "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and make it call a\n `private` function that does the actual work."
                  },
                  "id": 2331,
                  "name": "nonReentrant",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 2315,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1602:2:8"
                  },
                  "src": "1581:400:8",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2333,
              "src": "732:1251:8"
            }
          ],
          "src": "39:1944:8"
        },
        "id": 8
      },
      "contracts/utils/WrapAndNiftyswap.sol": {
        "ast": {
          "absolutePath": "contracts/utils/WrapAndNiftyswap.sol",
          "exportedSymbols": {
            "IERC1155": [
              3875
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "IERC20": [
              4035
            ],
            "IERC20Wrapper": [
              2837
            ],
            "INiftyswapExchange": [
              2238
            ],
            "WrapAndNiftyswap": [
              2753
            ]
          },
          "id": 2754,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2334,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:9"
            },
            {
              "id": 2335,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "62:33:9"
            },
            {
              "absolutePath": "contracts/interfaces/INiftyswapExchange.sol",
              "file": "../interfaces/INiftyswapExchange.sol",
              "id": 2336,
              "nodeType": "ImportDirective",
              "scope": 2754,
              "sourceUnit": 2239,
              "src": "97:46:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC20.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC20.sol",
              "id": 2337,
              "nodeType": "ImportDirective",
              "scope": 2754,
              "sourceUnit": 4036,
              "src": "144:62:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC1155.sol",
              "id": 2338,
              "nodeType": "ImportDirective",
              "scope": 2754,
              "sourceUnit": 3876,
              "src": "207:64:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol",
              "id": 2339,
              "nodeType": "ImportDirective",
              "scope": 2754,
              "sourceUnit": 3931,
              "src": "272:77:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "erc20-meta-token/contracts/interfaces/IERC20Wrapper.sol",
              "file": "erc20-meta-token/contracts/interfaces/IERC20Wrapper.sol",
              "id": 2340,
              "nodeType": "ImportDirective",
              "scope": 2754,
              "sourceUnit": 2838,
              "src": "350:65:9",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2341,
                "nodeType": "StructuredDocumentation",
                "src": "417:413:9",
                "text": " @notice Will allow users to wrap their  ERC-20 into ERC-1155 tokens\n         and pass their order to niftyswap. All funds will be returned\n         to original owner and this contact should never hold any funds\n         outside of a given wrap transaction.\n @dev Hardcoding addresses for simplicity, easy to generalize if arguments\n      are passed in functions, but adds a bit of complexity."
              },
              "fullyImplemented": true,
              "id": 2753,
              "linearizedBaseContracts": [
                2753
              ],
              "name": "WrapAndNiftyswap",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "functionSelector": "c5e3dfd8",
                  "id": 2343,
                  "mutability": "immutable",
                  "name": "tokenWrapper",
                  "nodeType": "VariableDeclaration",
                  "scope": 2753,
                  "src": "862:43:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                    "typeString": "contract IERC20Wrapper"
                  },
                  "typeName": {
                    "id": 2342,
                    "name": "IERC20Wrapper",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 2837,
                    "src": "862:13:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                      "typeString": "contract IERC20Wrapper"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d2f7265a",
                  "id": 2345,
                  "mutability": "immutable",
                  "name": "exchange",
                  "nodeType": "VariableDeclaration",
                  "scope": 2753,
                  "src": "954:33:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2344,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "954:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "785e9e86",
                  "id": 2347,
                  "mutability": "immutable",
                  "name": "erc20",
                  "nodeType": "VariableDeclaration",
                  "scope": 2753,
                  "src": "1030:30:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2346,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1030:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "functionSelector": "d56022d7",
                  "id": 2349,
                  "mutability": "immutable",
                  "name": "erc1155",
                  "nodeType": "VariableDeclaration",
                  "scope": 2753,
                  "src": "1114:32:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2348,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1114:7:9",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "public"
                },
                {
                  "constant": false,
                  "id": 2351,
                  "mutability": "immutable",
                  "name": "wrappedTokenID",
                  "nodeType": "VariableDeclaration",
                  "scope": 2753,
                  "src": "1201:41:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2350,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1201:7:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2353,
                  "mutability": "mutable",
                  "name": "isInNiftyswap",
                  "nodeType": "VariableDeclaration",
                  "scope": 2753,
                  "src": "1273:27:9",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 2352,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1273:4:9",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2435,
                    "nodeType": "Block",
                    "src": "1533:669:9",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 2385,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 2378,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    "id": 2371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2366,
                                      "name": "_tokenWrapper",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2356,
                                      "src": "1554:13:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "307830",
                                          "id": 2369,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1579:3:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0x0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 2368,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1571:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 2367,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1571:7:9",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 2370,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1571:12:9",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "1554:29:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 2377,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2372,
                                      "name": "_exchange",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2358,
                                      "src": "1593:9:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "307830",
                                          "id": 2375,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1614:3:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          },
                                          "value": "0x0"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                          }
                                        ],
                                        "id": 2374,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1606:7:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 2373,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1606:7:9",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 2376,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1606:12:9",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "1593:25:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "1554:64:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 2384,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2379,
                                    "name": "_erc20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2360,
                                    "src": "1628:6:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "307830",
                                        "id": 2382,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "1646:3:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        },
                                        "value": "0x0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "id": 2381,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1638:7:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2380,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1638:7:9",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2383,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1638:12:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "src": "1628:22:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "1554:96:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2391,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2386,
                                  "name": "_erc1155",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2362,
                                  "src": "1660:8:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "307830",
                                      "id": 2389,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1680:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0x0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2388,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1672:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2387,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1672:7:9",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2390,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1672:12:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "1660:24:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1554:130:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "494e56414c494420434f4e5354525543544f5220415247554d454e54",
                              "id": 2393,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1692:30:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cafbc8c54e5d74044a6e4f938f7c88a87e39c80c238cc62d832a59732539333c",
                                "typeString": "literal_string \"INVALID CONSTRUCTOR ARGUMENT\""
                              },
                              "value": "INVALID CONSTRUCTOR ARGUMENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cafbc8c54e5d74044a6e4f938f7c88a87e39c80c238cc62d832a59732539333c",
                                "typeString": "literal_string \"INVALID CONSTRUCTOR ARGUMENT\""
                              }
                            ],
                            "id": 2365,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1539:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2394,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1539:189:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2395,
                        "nodeType": "ExpressionStatement",
                        "src": "1539:189:9"
                      },
                      {
                        "expression": {
                          "id": 2400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2396,
                            "name": "tokenWrapper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2343,
                            "src": "1735:12:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                              "typeString": "contract IERC20Wrapper"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 2398,
                                "name": "_tokenWrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2356,
                                "src": "1764:13:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "id": 2397,
                              "name": "IERC20Wrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2837,
                              "src": "1750:13:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20Wrapper_$2837_$",
                                "typeString": "type(contract IERC20Wrapper)"
                              }
                            },
                            "id": 2399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1750:28:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                              "typeString": "contract IERC20Wrapper"
                            }
                          },
                          "src": "1735:43:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                            "typeString": "contract IERC20Wrapper"
                          }
                        },
                        "id": 2401,
                        "nodeType": "ExpressionStatement",
                        "src": "1735:43:9"
                      },
                      {
                        "expression": {
                          "id": 2404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2402,
                            "name": "exchange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2345,
                            "src": "1784:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2403,
                            "name": "_exchange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2358,
                            "src": "1795:9:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1784:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2405,
                        "nodeType": "ExpressionStatement",
                        "src": "1784:20:9"
                      },
                      {
                        "expression": {
                          "id": 2408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2406,
                            "name": "erc20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2347,
                            "src": "1810:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2407,
                            "name": "_erc20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2360,
                            "src": "1818:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1810:14:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2409,
                        "nodeType": "ExpressionStatement",
                        "src": "1810:14:9"
                      },
                      {
                        "expression": {
                          "id": 2412,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2410,
                            "name": "erc1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2349,
                            "src": "1830:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 2411,
                            "name": "_erc1155",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2362,
                            "src": "1840:8:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1830:18:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 2413,
                        "nodeType": "ExpressionStatement",
                        "src": "1830:18:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2418,
                              "name": "_tokenWrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2356,
                              "src": "2072:13:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                                "typeString": "int_const 1157...(70 digits omitted)...9935"
                              },
                              "id": 2423,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1",
                                  "typeString": "int_const 1157...(70 digits omitted)...9936"
                                },
                                "id": 2421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "32",
                                  "id": 2419,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2087:1:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "**",
                                "rightExpression": {
                                  "hexValue": "323536",
                                  "id": 2420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2090:3:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_256_by_1",
                                    "typeString": "int_const 256"
                                  },
                                  "value": "256"
                                },
                                "src": "2087:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639936_by_1",
                                  "typeString": "int_const 1157...(70 digits omitted)...9936"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 2422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2094:1:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "2087:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                                "typeString": "int_const 1157...(70 digits omitted)...9935"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_rational_115792089237316195423570985008687907853269984665640564039457584007913129639935_by_1",
                                "typeString": "int_const 1157...(70 digits omitted)...9935"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2415,
                                  "name": "_erc20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2360,
                                  "src": "2056:6:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2414,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4035,
                                "src": "2049:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4035_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2416,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2049:14:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4035",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "approve",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3986,
                            "src": "2049:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,uint256) external returns (bool)"
                            }
                          },
                          "id": 2424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2049:47:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2425,
                        "nodeType": "ExpressionStatement",
                        "src": "2049:47:9"
                      },
                      {
                        "expression": {
                          "id": 2433,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2426,
                            "name": "wrappedTokenID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2351,
                            "src": "2133:14:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 2431,
                                "name": "_erc20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2360,
                                "src": "2190:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2428,
                                    "name": "_tokenWrapper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2356,
                                    "src": "2164:13:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 2427,
                                  "name": "IERC20Wrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2837,
                                  "src": "2150:13:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20Wrapper_$2837_$",
                                    "typeString": "type(contract IERC20Wrapper)"
                                  }
                                },
                                "id": 2429,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2150:28:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                                  "typeString": "contract IERC20Wrapper"
                                }
                              },
                              "id": 2430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getTokenID",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2790,
                              "src": "2150:39:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 2432,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2150:47:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2133:64:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 2434,
                        "nodeType": "ExpressionStatement",
                        "src": "2133:64:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2354,
                    "nodeType": "StructuredDocumentation",
                    "src": "1356:51:9",
                    "text": " @notice Registers contract addresses"
                  },
                  "id": 2436,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2363,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2356,
                        "mutability": "mutable",
                        "name": "_tokenWrapper",
                        "nodeType": "VariableDeclaration",
                        "scope": 2436,
                        "src": "1427:29:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 2355,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1427:15:9",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2358,
                        "mutability": "mutable",
                        "name": "_exchange",
                        "nodeType": "VariableDeclaration",
                        "scope": 2436,
                        "src": "1462:17:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2357,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1462:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2360,
                        "mutability": "mutable",
                        "name": "_erc20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2436,
                        "src": "1485:14:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2359,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1485:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2362,
                        "mutability": "mutable",
                        "name": "_erc1155",
                        "nodeType": "VariableDeclaration",
                        "scope": 2436,
                        "src": "1505:16:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2361,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1505:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1421:104:9"
                  },
                  "returnParameters": {
                    "id": 2364,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1533:0:9"
                  },
                  "scope": 2753,
                  "src": "1410:792:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2571,
                    "nodeType": "Block",
                    "src": "2676:1294:9",
                    "statements": [
                      {
                        "assignments": [
                          2449
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2449,
                            "mutability": "mutable",
                            "name": "obj",
                            "nodeType": "VariableDeclaration",
                            "scope": 2571,
                            "src": "2712:42:9",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                              "typeString": "struct INiftyswapExchange.BuyTokensObj"
                            },
                            "typeName": {
                              "id": 2448,
                              "name": "INiftyswapExchange.BuyTokensObj",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2091,
                              "src": "2712:31:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BuyTokensObj_$2091_storage_ptr",
                                "typeString": "struct INiftyswapExchange.BuyTokensObj"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2450,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2712:42:9"
                      },
                      {
                        "expression": {
                          "id": 2462,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              null,
                              {
                                "id": 2451,
                                "name": "obj",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2449,
                                "src": "2763:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                  "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                }
                              }
                            ],
                            "id": 2452,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "2760:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$_t_struct$_BuyTokensObj_$2091_memory_ptr_$",
                              "typeString": "tuple(,struct INiftyswapExchange.BuyTokensObj memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 2455,
                                "name": "_niftyswapOrder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2443,
                                "src": "2781:15:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 2457,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2799:6:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes4_$",
                                      "typeString": "type(bytes4)"
                                    },
                                    "typeName": {
                                      "id": 2456,
                                      "name": "bytes4",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2799:6:9",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2458,
                                      "name": "INiftyswapExchange",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2238,
                                      "src": "2807:18:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_INiftyswapExchange_$2238_$",
                                        "typeString": "type(contract INiftyswapExchange)"
                                      }
                                    },
                                    "id": 2459,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "BuyTokensObj",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2091,
                                    "src": "2807:31:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_BuyTokensObj_$2091_storage_ptr_$",
                                      "typeString": "type(struct INiftyswapExchange.BuyTokensObj storage pointer)"
                                    }
                                  }
                                ],
                                "id": 2460,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2798:41:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_BuyTokensObj_$2091_storage_ptr_$_$",
                                  "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.BuyTokensObj storage pointer))"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                },
                                {
                                  "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_BuyTokensObj_$2091_storage_ptr_$_$",
                                  "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.BuyTokensObj storage pointer))"
                                }
                              ],
                              "expression": {
                                "id": 2453,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2770:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 2454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "2770:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 2461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2770:70:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bytes4_$_t_struct$_BuyTokensObj_$2091_memory_ptr_$",
                              "typeString": "tuple(bytes4,struct INiftyswapExchange.BuyTokensObj memory)"
                            }
                          },
                          "src": "2760:80:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2463,
                        "nodeType": "ExpressionStatement",
                        "src": "2760:80:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2479,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2471,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 2465,
                                    "name": "obj",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2449,
                                    "src": "3009:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                      "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                    }
                                  },
                                  "id": 2466,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "recipient",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2082,
                                  "src": "3009:13:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "307830",
                                      "id": 2469,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3034:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0x0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2468,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3026:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2467,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3026:7:9",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2470,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3026:12:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "3009:29:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2478,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 2472,
                                    "name": "obj",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2449,
                                    "src": "3042:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                      "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                    }
                                  },
                                  "id": 2473,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "recipient",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2082,
                                  "src": "3042:13:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 2476,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "3067:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                        "typeString": "contract WrapAndNiftyswap"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                        "typeString": "contract WrapAndNiftyswap"
                                      }
                                    ],
                                    "id": 2475,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "3059:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2474,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "3059:7:9",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2477,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3059:13:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3042:30:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3009:63:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "57726170416e644e69667479737761702377726170416e64537761703a204f5244455220524543495049454e54204d555354204245205448495320434f4e5452414354",
                              "id": 2480,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3081:69:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_90ae4b83f1b6dd67a90498eb9b48546fb2b38469c3930dc79a0df702509f715d",
                                "typeString": "literal_string \"WrapAndNiftyswap#wrapAndSwap: ORDER RECIPIENT MUST BE THIS CONTRACT\""
                              },
                              "value": "WrapAndNiftyswap#wrapAndSwap: ORDER RECIPIENT MUST BE THIS CONTRACT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_90ae4b83f1b6dd67a90498eb9b48546fb2b38469c3930dc79a0df702509f715d",
                                "typeString": "literal_string \"WrapAndNiftyswap#wrapAndSwap: ORDER RECIPIENT MUST BE THIS CONTRACT\""
                              }
                            ],
                            "id": 2464,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2994:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2481,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2994:162:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2482,
                        "nodeType": "ExpressionStatement",
                        "src": "2994:162:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 2487,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3235:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2488,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3235:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 2491,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3255:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                ],
                                "id": 2490,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3247:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2489,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3247:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2492,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3247:13:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2493,
                              "name": "_maxAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2439,
                              "src": "3262:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2484,
                                  "name": "erc20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2347,
                                  "src": "3215:5:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2483,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4035,
                                "src": "3208:6:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4035_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2485,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3208:13:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4035",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2486,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3997,
                            "src": "3208:26:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                              "typeString": "function (address,address,uint256) external returns (bool)"
                            }
                          },
                          "id": 2494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3208:65:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2495,
                        "nodeType": "ExpressionStatement",
                        "src": "3208:65:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2499,
                              "name": "erc20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2347,
                              "src": "3321:5:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 2502,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3336:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                ],
                                "id": 2501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3328:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2500,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3328:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3328:13:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2504,
                              "name": "_maxAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2439,
                              "src": "3343:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2496,
                              "name": "tokenWrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2343,
                              "src": "3300:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                                "typeString": "contract IERC20Wrapper"
                              }
                            },
                            "id": 2498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2772,
                            "src": "3300:20:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256) payable external"
                            }
                          },
                          "id": 2505,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3300:54:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2506,
                        "nodeType": "ExpressionStatement",
                        "src": "3300:54:9"
                      },
                      {
                        "expression": {
                          "id": 2509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2507,
                            "name": "isInNiftyswap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2353,
                            "src": "3386:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 2508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3402:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "3386:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2510,
                        "nodeType": "ExpressionStatement",
                        "src": "3386:20:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2516,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3450:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                ],
                                "id": 2515,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3442:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2514,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3442:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3442:13:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2518,
                              "name": "exchange",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2345,
                              "src": "3457:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2519,
                              "name": "wrappedTokenID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2351,
                              "src": "3467:14:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2520,
                              "name": "_maxAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2439,
                              "src": "3483:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 2521,
                              "name": "_niftyswapOrder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2443,
                              "src": "3495:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "id": 2511,
                              "name": "tokenWrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2343,
                              "src": "3412:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                                "typeString": "contract IERC20Wrapper"
                              }
                            },
                            "id": 2513,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3817,
                            "src": "3412:29:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                            }
                          },
                          "id": 2522,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3412:99:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2523,
                        "nodeType": "ExpressionStatement",
                        "src": "3412:99:9"
                      },
                      {
                        "expression": {
                          "id": 2526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2524,
                            "name": "isInNiftyswap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2353,
                            "src": "3517:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 2525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3533:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "3517:21:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2527,
                        "nodeType": "ExpressionStatement",
                        "src": "3517:21:9"
                      },
                      {
                        "assignments": [
                          2529
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2529,
                            "mutability": "mutable",
                            "name": "wrapped_token_amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2571,
                            "src": "3604:28:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2528,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3604:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2538,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2534,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3666:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                ],
                                "id": 2533,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3658:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2532,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3658:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3658:13:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2536,
                              "name": "wrappedTokenID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2351,
                              "src": "3673:14:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2530,
                              "name": "tokenWrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2343,
                              "src": "3635:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                                "typeString": "contract IERC20Wrapper"
                              }
                            },
                            "id": 2531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3843,
                            "src": "3635:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 2537,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3635:53:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3604:84:9"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2539,
                            "name": "wrapped_token_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2529,
                            "src": "3698:20:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2540,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3721:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3698:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2554,
                        "nodeType": "IfStatement",
                        "src": "3694:116:9",
                        "trueBody": {
                          "id": 2553,
                          "nodeType": "Block",
                          "src": "3724:86:9",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2545,
                                    "name": "erc20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2347,
                                    "src": "3754:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 2548,
                                        "name": "_recipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2441,
                                        "src": "3769:10:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2547,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3761:8:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                        "typeString": "type(address payable)"
                                      },
                                      "typeName": {
                                        "id": 2546,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3761:8:9",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2549,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3761:19:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 2550,
                                    "name": "wrapped_token_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2529,
                                    "src": "3782:20:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2542,
                                    "name": "tokenWrapper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2343,
                                    "src": "3732:12:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                                      "typeString": "contract IERC20Wrapper"
                                    }
                                  },
                                  "id": 2544,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2782,
                                  "src": "3732:21:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_payable_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address payable,uint256) external"
                                  }
                                },
                                "id": 2551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3732:71:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2552,
                              "nodeType": "ExpressionStatement",
                              "src": "3732:71:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2561,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "3897:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                ],
                                "id": 2560,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3889:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2559,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3889:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2562,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3889:13:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2563,
                              "name": "_recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2441,
                              "src": "3904:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 2564,
                                "name": "obj",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2449,
                                "src": "3916:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                  "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                }
                              },
                              "id": 2565,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokensBoughtIDs",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2085,
                              "src": "3916:19:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "expression": {
                                "id": 2566,
                                "name": "obj",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2449,
                                "src": "3937:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BuyTokensObj_$2091_memory_ptr",
                                  "typeString": "struct INiftyswapExchange.BuyTokensObj memory"
                                }
                              },
                              "id": 2567,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "tokensBoughtAmounts",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2088,
                              "src": "3937:23:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 2568,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3962:2:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 2556,
                                  "name": "erc1155",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2349,
                                  "src": "3858:7:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2555,
                                "name": "IERC1155",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3875,
                                "src": "3849:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                  "typeString": "type(contract IERC1155)"
                                }
                              },
                              "id": 2557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3849:17:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155_$3875",
                                "typeString": "contract IERC1155"
                              }
                            },
                            "id": 2558,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeBatchTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3833,
                            "src": "3849:39:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external"
                            }
                          },
                          "id": 2569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3849:116:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2570,
                        "nodeType": "ExpressionStatement",
                        "src": "3849:116:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2437,
                    "nodeType": "StructuredDocumentation",
                    "src": "2206:347:9",
                    "text": " @notice Wrap ERC-20 to ERC-1155 and swap them\n @dev User must approve this contract for ERC-20 first\n @param _maxAmount       Maximum amount of ERC-20 user wants to spend\n @param _recipient       Address where to send tokens\n @param _niftyswapOrder  Encoded Niftyswap order passed in data field of safeTransferFrom()"
                  },
                  "functionSelector": "a874d5b6",
                  "id": 2572,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "wrapAndSwap",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2444,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2439,
                        "mutability": "mutable",
                        "name": "_maxAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 2572,
                        "src": "2582:18:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2438,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2582:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2441,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 2572,
                        "src": "2606:18:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2606:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2443,
                        "mutability": "mutable",
                        "name": "_niftyswapOrder",
                        "nodeType": "VariableDeclaration",
                        "scope": 2572,
                        "src": "2630:30:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2442,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2630:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2576:88:9"
                  },
                  "returnParameters": {
                    "id": 2445,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2676:0:9"
                  },
                  "scope": 2753,
                  "src": "2556:1414:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2605,
                    "nodeType": "Block",
                    "src": "4245:197:9",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          "id": 2594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 2588,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "4255:3:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2589,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "4255:10:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "id": 2592,
                                "name": "tokenWrapper",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2343,
                                "src": "4277:12:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                                  "typeString": "contract IERC20Wrapper"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                                  "typeString": "contract IERC20Wrapper"
                                }
                              ],
                              "id": 2591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4269:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 2590,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "4269:7:9",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 2593,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4269:21:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4255:35:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2600,
                        "nodeType": "IfStatement",
                        "src": "4251:126:9",
                        "trueBody": {
                          "id": 2599,
                          "nodeType": "Block",
                          "src": "4292:85:9",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "57726170416e644e6966747973776170236f6e4552433131353552656365697665643a20494e56414c49445f455243313135355f5245434549564544",
                                    "id": 2596,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4307:62:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_4b95ec467989556bcab6c71b721a33a3e8a5c6706201a934989da9cf2cf4084b",
                                      "typeString": "literal_string \"WrapAndNiftyswap#onERC1155Received: INVALID_ERC1155_RECEIVED\""
                                    },
                                    "value": "WrapAndNiftyswap#onERC1155Received: INVALID_ERC1155_RECEIVED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_4b95ec467989556bcab6c71b721a33a3e8a5c6706201a934989da9cf2cf4084b",
                                      "typeString": "literal_string \"WrapAndNiftyswap#onERC1155Received: INVALID_ERC1155_RECEIVED\""
                                    }
                                  ],
                                  "id": 2595,
                                  "name": "revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -19,
                                    -19
                                  ],
                                  "referencedDeclaration": -19,
                                  "src": "4300:6:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory) pure"
                                  }
                                },
                                "id": 2597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4300:70:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2598,
                              "nodeType": "ExpressionStatement",
                              "src": "4300:70:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "expression": {
                              "id": 2601,
                              "name": "IERC1155TokenReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3930,
                              "src": "4389:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3930_$",
                                "typeString": "type(contract IERC1155TokenReceiver)"
                              }
                            },
                            "id": 2602,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "onERC1155Received",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3911,
                            "src": "4389:39:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                              "typeString": "function IERC1155TokenReceiver.onERC1155Received(address,address,uint256,uint256,bytes calldata) returns (bytes4)"
                            }
                          },
                          "id": 2603,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "selector",
                          "nodeType": "MemberAccess",
                          "src": "4389:48:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 2587,
                        "id": 2604,
                        "nodeType": "Return",
                        "src": "4382:55:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2573,
                    "nodeType": "StructuredDocumentation",
                    "src": "3974:158:9",
                    "text": " @notice Accepts only tokenWrapper tokens \n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 2606,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2584,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2575,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2606,
                        "src": "4162:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2574,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4162:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2577,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2606,
                        "src": "4171:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2576,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4171:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2579,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2606,
                        "src": "4180:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2578,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4180:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2581,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2606,
                        "src": "4189:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2580,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4189:7:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2583,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2606,
                        "src": "4198:14:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2582,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4198:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4161:52:9"
                  },
                  "returnParameters": {
                    "id": 2587,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2586,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2606,
                        "src": "4235:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2585,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "4235:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4234:8:9"
                  },
                  "scope": 2753,
                  "src": "4135:307:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 2751,
                    "nodeType": "Block",
                    "src": "4940:1309:9",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 2632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2624,
                            "name": "isInNiftyswap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2353,
                            "src": "5008:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "id": 2631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2625,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5025:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "5025:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "arguments": [
                                {
                                  "id": 2629,
                                  "name": "tokenWrapper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2343,
                                  "src": "5047:12:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                                    "typeString": "contract IERC20Wrapper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                                    "typeString": "contract IERC20Wrapper"
                                  }
                                ],
                                "id": 2628,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5039:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2627,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5039:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2630,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5039:21:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "5025:35:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5008:52:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 2638,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5146:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "5146:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 2640,
                              "name": "erc1155",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2349,
                              "src": "5160:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "5146:21:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 2647,
                          "nodeType": "IfStatement",
                          "src": "5142:117:9",
                          "trueBody": {
                            "id": 2646,
                            "nodeType": "Block",
                            "src": "5169:90:9",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "57726170416e644e6966747973776170236f6e45524331313535426174636852656365697665643a20494e56414c49445f455243313135355f5245434549564544",
                                      "id": 2643,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5184:67:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_4c86d9d1f289c13e541fc5b0f4eb6c7834db5be146fa52dd046efb1e97d216dd",
                                        "typeString": "literal_string \"WrapAndNiftyswap#onERC1155BatchReceived: INVALID_ERC1155_RECEIVED\""
                                      },
                                      "value": "WrapAndNiftyswap#onERC1155BatchReceived: INVALID_ERC1155_RECEIVED"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_4c86d9d1f289c13e541fc5b0f4eb6c7834db5be146fa52dd046efb1e97d216dd",
                                        "typeString": "literal_string \"WrapAndNiftyswap#onERC1155BatchReceived: INVALID_ERC1155_RECEIVED\""
                                      }
                                    ],
                                    "id": 2642,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "5177:6:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 2644,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5177:75:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 2645,
                                "nodeType": "ExpressionStatement",
                                "src": "5177:75:9"
                              }
                            ]
                          }
                        },
                        "id": 2648,
                        "nodeType": "IfStatement",
                        "src": "5004:255:9",
                        "trueBody": {
                          "id": 2637,
                          "nodeType": "Block",
                          "src": "5061:75:9",
                          "statements": [
                            {
                              "expression": {
                                "expression": {
                                  "expression": {
                                    "id": 2633,
                                    "name": "IERC1155TokenReceiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3930,
                                    "src": "5076:21:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3930_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  },
                                  "id": 2634,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "onERC1155BatchReceived",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3929,
                                  "src": "5076:44:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function IERC1155TokenReceiver.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"
                                  }
                                },
                                "id": 2635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "src": "5076:53:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "functionReturnParameters": 2623,
                              "id": 2636,
                              "nodeType": "Return",
                              "src": "5069:60:9"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2652
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2652,
                            "mutability": "mutable",
                            "name": "obj",
                            "nodeType": "VariableDeclaration",
                            "scope": 2751,
                            "src": "5293:43:9",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SellTokensObj_$2098_memory_ptr",
                              "typeString": "struct INiftyswapExchange.SellTokensObj"
                            },
                            "typeName": {
                              "id": 2651,
                              "name": "INiftyswapExchange.SellTokensObj",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 2098,
                              "src": "5293:32:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_SellTokensObj_$2098_storage_ptr",
                                "typeString": "struct INiftyswapExchange.SellTokensObj"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2653,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5293:43:9"
                      },
                      {
                        "expression": {
                          "id": 2665,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              null,
                              {
                                "id": 2654,
                                "name": "obj",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2652,
                                "src": "5344:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SellTokensObj_$2098_memory_ptr",
                                  "typeString": "struct INiftyswapExchange.SellTokensObj memory"
                                }
                              }
                            ],
                            "id": 2655,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "5342:6:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$_t_struct$_SellTokensObj_$2098_memory_ptr_$",
                              "typeString": "tuple(,struct INiftyswapExchange.SellTokensObj memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 2658,
                                "name": "_niftyswapOrder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2619,
                                "src": "5362:15:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 2660,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5380:6:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes4_$",
                                      "typeString": "type(bytes4)"
                                    },
                                    "typeName": {
                                      "id": 2659,
                                      "name": "bytes4",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5380:6:9",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2661,
                                      "name": "INiftyswapExchange",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2238,
                                      "src": "5388:18:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_INiftyswapExchange_$2238_$",
                                        "typeString": "type(contract INiftyswapExchange)"
                                      }
                                    },
                                    "id": 2662,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "SellTokensObj",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2098,
                                    "src": "5388:32:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_SellTokensObj_$2098_storage_ptr_$",
                                      "typeString": "type(struct INiftyswapExchange.SellTokensObj storage pointer)"
                                    }
                                  }
                                ],
                                "id": 2663,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5379:42:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_SellTokensObj_$2098_storage_ptr_$_$",
                                  "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.SellTokensObj storage pointer))"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                },
                                {
                                  "typeIdentifier": "t_tuple$_t_type$_t_bytes4_$_$_t_type$_t_struct$_SellTokensObj_$2098_storage_ptr_$_$",
                                  "typeString": "tuple(type(bytes4),type(struct INiftyswapExchange.SellTokensObj storage pointer))"
                                }
                              ],
                              "expression": {
                                "id": 2656,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "5351:3:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 2657,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "5351:10:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 2664,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5351:71:9",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bytes4_$_t_struct$_SellTokensObj_$2098_memory_ptr_$",
                              "typeString": "tuple(bytes4,struct INiftyswapExchange.SellTokensObj memory)"
                            }
                          },
                          "src": "5342:80:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2666,
                        "nodeType": "ExpressionStatement",
                        "src": "5342:80:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 2682,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2674,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 2668,
                                    "name": "obj",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2652,
                                    "src": "5444:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SellTokensObj_$2098_memory_ptr",
                                      "typeString": "struct INiftyswapExchange.SellTokensObj memory"
                                    }
                                  },
                                  "id": 2669,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "recipient",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2093,
                                  "src": "5444:13:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "307830",
                                      "id": 2672,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5469:3:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0x0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 2671,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5461:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2670,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5461:7:9",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2673,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5461:12:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "5444:29:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 2681,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 2675,
                                    "name": "obj",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2652,
                                    "src": "5477:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_SellTokensObj_$2098_memory_ptr",
                                      "typeString": "struct INiftyswapExchange.SellTokensObj memory"
                                    }
                                  },
                                  "id": 2676,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "recipient",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2093,
                                  "src": "5477:13:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 2679,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "5502:4:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                        "typeString": "contract WrapAndNiftyswap"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                        "typeString": "contract WrapAndNiftyswap"
                                      }
                                    ],
                                    "id": 2678,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5494:7:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2677,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5494:7:9",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 2680,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5494:13:9",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "5477:30:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "5444:63:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "57726170416e644e6966747973776170236f6e45524331313535426174636852656365697665643a204f5244455220524543495049454e54204d555354204245205448495320434f4e5452414354",
                              "id": 2683,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5516:80:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_000f9a6097ad9cb17f2473b618ac2adea983d83e6facafa1e1d63ac5fd985e97",
                                "typeString": "literal_string \"WrapAndNiftyswap#onERC1155BatchReceived: ORDER RECIPIENT MUST BE THIS CONTRACT\""
                              },
                              "value": "WrapAndNiftyswap#onERC1155BatchReceived: ORDER RECIPIENT MUST BE THIS CONTRACT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_000f9a6097ad9cb17f2473b618ac2adea983d83e6facafa1e1d63ac5fd985e97",
                                "typeString": "literal_string \"WrapAndNiftyswap#onERC1155BatchReceived: ORDER RECIPIENT MUST BE THIS CONTRACT\""
                              }
                            ],
                            "id": 2667,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5429:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 2684,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5429:173:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2685,
                        "nodeType": "ExpressionStatement",
                        "src": "5429:173:9"
                      },
                      {
                        "expression": {
                          "id": 2688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2686,
                            "name": "isInNiftyswap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2353,
                            "src": "5634:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 2687,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5650:4:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "5634:20:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2689,
                        "nodeType": "ExpressionStatement",
                        "src": "5634:20:9"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2697,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5711:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                ],
                                "id": 2696,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5703:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2695,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5703:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2698,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5703:13:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2699,
                              "name": "exchange",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2345,
                              "src": "5718:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2700,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2614,
                              "src": "5728:4:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 2701,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2617,
                              "src": "5734:8:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              }
                            },
                            {
                              "id": 2702,
                              "name": "_niftyswapOrder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2619,
                              "src": "5744:15:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                "typeString": "uint256[] calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 2691,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "5669:3:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2692,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "5669:10:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 2690,
                                "name": "IERC1155",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3875,
                                "src": "5660:8:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                  "typeString": "type(contract IERC1155)"
                                }
                              },
                              "id": 2693,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5660:20:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC1155_$3875",
                                "typeString": "contract IERC1155"
                              }
                            },
                            "id": 2694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeBatchTransferFrom",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3833,
                            "src": "5660:42:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external"
                            }
                          },
                          "id": 2703,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5660:100:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2704,
                        "nodeType": "ExpressionStatement",
                        "src": "5660:100:9"
                      },
                      {
                        "expression": {
                          "id": 2707,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 2705,
                            "name": "isInNiftyswap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2353,
                            "src": "5766:13:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 2706,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5782:5:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "5766:21:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2708,
                        "nodeType": "ExpressionStatement",
                        "src": "5766:21:9"
                      },
                      {
                        "assignments": [
                          2710
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2710,
                            "mutability": "mutable",
                            "name": "wrapped_token_amount",
                            "nodeType": "VariableDeclaration",
                            "scope": 2751,
                            "src": "5848:28:9",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2709,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5848:7:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2719,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2715,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "5910:4:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                    "typeString": "contract WrapAndNiftyswap"
                                  }
                                ],
                                "id": 2714,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5902:7:9",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2713,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5902:7:9",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 2716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5902:13:9",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2717,
                              "name": "wrappedTokenID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2351,
                              "src": "5917:14:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 2711,
                              "name": "tokenWrapper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2343,
                              "src": "5879:12:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                                "typeString": "contract IERC20Wrapper"
                              }
                            },
                            "id": 2712,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3843,
                            "src": "5879:22:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256) view external returns (uint256)"
                            }
                          },
                          "id": 2718,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5879:53:9",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5848:84:9"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2722,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2720,
                            "name": "wrapped_token_amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2710,
                            "src": "5942:20:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2721,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5965:1:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5942:24:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2746,
                        "nodeType": "IfStatement",
                        "src": "5938:240:9",
                        "trueBody": {
                          "id": 2745,
                          "nodeType": "Block",
                          "src": "5968:210:9",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2726,
                                    "name": "erc20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2347,
                                    "src": "6060:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 2731,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -28,
                                            "src": "6083:4:9",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                              "typeString": "contract WrapAndNiftyswap"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_WrapAndNiftyswap_$2753",
                                              "typeString": "contract WrapAndNiftyswap"
                                            }
                                          ],
                                          "id": 2730,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "6075:7:9",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 2729,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6075:7:9",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 2732,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6075:13:9",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2728,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "6067:8:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                        "typeString": "type(address payable)"
                                      },
                                      "typeName": {
                                        "id": 2727,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "6067:8:9",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 2733,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6067:22:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 2734,
                                    "name": "wrapped_token_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2710,
                                    "src": "6091:20:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "id": 2723,
                                    "name": "tokenWrapper",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2343,
                                    "src": "6038:12:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20Wrapper_$2837",
                                      "typeString": "contract IERC20Wrapper"
                                    }
                                  },
                                  "id": 2725,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "withdraw",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 2782,
                                  "src": "6038:21:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_payable_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address payable,uint256) external"
                                  }
                                },
                                "id": 2735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6038:74:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2736,
                              "nodeType": "ExpressionStatement",
                              "src": "6038:74:9"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2741,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2611,
                                    "src": "6143:5:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2742,
                                    "name": "wrapped_token_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2710,
                                    "src": "6150:20:9",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 2738,
                                        "name": "erc20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2347,
                                        "src": "6127:5:9",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2737,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4035,
                                      "src": "6120:6:9",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4035_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 2739,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6120:13:9",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4035",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 2740,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3977,
                                  "src": "6120:22:9",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 2743,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6120:51:9",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2744,
                              "nodeType": "ExpressionStatement",
                              "src": "6120:51:9"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "expression": {
                            "expression": {
                              "id": 2747,
                              "name": "IERC1155TokenReceiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3930,
                              "src": "6191:21:9",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3930_$",
                                "typeString": "type(contract IERC1155TokenReceiver)"
                              }
                            },
                            "id": 2748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "onERC1155BatchReceived",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3929,
                            "src": "6191:44:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_array$_t_uint256_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                              "typeString": "function IERC1155TokenReceiver.onERC1155BatchReceived(address,address,uint256[] calldata,uint256[] calldata,bytes calldata) returns (bytes4)"
                            }
                          },
                          "id": 2749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "selector",
                          "nodeType": "MemberAccess",
                          "src": "6191:53:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 2623,
                        "id": 2750,
                        "nodeType": "Return",
                        "src": "6184:60:9"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2607,
                    "nodeType": "StructuredDocumentation",
                    "src": "4446:290:9",
                    "text": " @notice If receives tracked ERC-1155, it will send a sell order to niftyswap and unwrap received\n         wrapped token. The unwrapped tokens will be sent to the sender.\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`"
                  },
                  "functionSelector": "bc197c81",
                  "id": 2752,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2620,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2609,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2752,
                        "src": "4776:7:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2608,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4776:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2611,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2752,
                        "src": "4790:13:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2610,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4790:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2614,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2752,
                        "src": "4810:23:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2612,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4810:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2613,
                          "nodeType": "ArrayTypeName",
                          "src": "4810:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2617,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 2752,
                        "src": "4840:27:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2615,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4840:7:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2616,
                          "nodeType": "ArrayTypeName",
                          "src": "4840:9:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2619,
                        "mutability": "mutable",
                        "name": "_niftyswapOrder",
                        "nodeType": "VariableDeclaration",
                        "scope": 2752,
                        "src": "4874:30:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2618,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4874:5:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4770:138:9"
                  },
                  "returnParameters": {
                    "id": 2623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2622,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2752,
                        "src": "4930:6:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2621,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "4930:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4929:8:9"
                  },
                  "scope": 2753,
                  "src": "4739:1510:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2754,
              "src": "831:5420:9"
            }
          ],
          "src": "39:6213:9"
        },
        "id": 9
      },
      "erc20-meta-token/contracts/interfaces/IERC20Wrapper.sol": {
        "ast": {
          "absolutePath": "erc20-meta-token/contracts/interfaces/IERC20Wrapper.sol",
          "exportedSymbols": {
            "IERC1155": [
              3875
            ],
            "IERC20Wrapper": [
              2837
            ]
          },
          "id": 2838,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2755,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:22:10"
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC1155.sol",
              "id": 2756,
              "nodeType": "ImportDirective",
              "scope": 2838,
              "sourceUnit": 3876,
              "src": "23:64:10",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2757,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3875,
                    "src": "116:8:10",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$3875",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "id": 2758,
                  "nodeType": "InheritanceSpecifier",
                  "src": "116:8:10"
                }
              ],
              "contractDependencies": [
                3875
              ],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 2837,
              "linearizedBaseContracts": [
                2837,
                3875
              ],
              "name": "IERC20Wrapper",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2759,
                    "nodeType": "StructuredDocumentation",
                    "src": "251:94:10",
                    "text": " Fallback function\n @dev Deposit ETH in this contract to receive wrapped ETH"
                  },
                  "id": 2762,
                  "implemented": false,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2760,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "356:2:10"
                  },
                  "returnParameters": {
                    "id": 2761,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "375:0:10"
                  },
                  "scope": 2837,
                  "src": "348:28:10",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2763,
                    "nodeType": "StructuredDocumentation",
                    "src": "380:407:10",
                    "text": " @dev Deposit ERC20 tokens or ETH in this contract to receive wrapped ERC20s\n @param _token     The addess of the token to deposit in this contract\n @param _recipient Address that will receive the ERC-1155 tokens\n @param _value     The amount of token to deposit in this contract\n Note: Users must first approve this contract addres on the contract of the ERC20 to be deposited"
                  },
                  "functionSelector": "8340f549",
                  "id": 2772,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2770,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2765,
                        "mutability": "mutable",
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 2772,
                        "src": "807:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2764,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "807:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2767,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 2772,
                        "src": "823:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2766,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "823:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2769,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2772,
                        "src": "843:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2768,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "843:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "806:52:10"
                  },
                  "returnParameters": {
                    "id": 2771,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "875:0:10"
                  },
                  "scope": 2837,
                  "src": "790:86:10",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2773,
                    "nodeType": "StructuredDocumentation",
                    "src": "1002:296:10",
                    "text": " @dev Withdraw wrapped ERC20 tokens in this contract to receive the original ERC20s or ETH\n @param _token The addess of the token to withdrww from this contract\n @param _to The address where the withdrawn tokens will go to\n @param _value The amount of tokens to withdraw"
                  },
                  "functionSelector": "d9caed12",
                  "id": 2782,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2780,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2775,
                        "mutability": "mutable",
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 2782,
                        "src": "1319:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2774,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1319:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2777,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2782,
                        "src": "1335:19:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 2776,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1335:15:10",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2779,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2782,
                        "src": "1356:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2778,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1356:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1318:53:10"
                  },
                  "returnParameters": {
                    "id": 2781,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1380:0:10"
                  },
                  "scope": 2837,
                  "src": "1301:80:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2783,
                    "nodeType": "StructuredDocumentation",
                    "src": "1507:214:10",
                    "text": " @notice Return the Meta-ERC20 token ID for the given ERC-20 token address\n @param _token ERC-20 token address to get the corresponding Meta-ERC20 token ID\n @return tokenID Meta-ERC20 token ID"
                  },
                  "functionSelector": "63f8071c",
                  "id": 2790,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTokenID",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2786,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2785,
                        "mutability": "mutable",
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 2790,
                        "src": "1744:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2784,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1744:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1743:16:10"
                  },
                  "returnParameters": {
                    "id": 2789,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2788,
                        "mutability": "mutable",
                        "name": "tokenID",
                        "nodeType": "VariableDeclaration",
                        "scope": 2790,
                        "src": "1783:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2787,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1783:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1782:17:10"
                  },
                  "scope": 2837,
                  "src": "1724:76:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2791,
                    "nodeType": "StructuredDocumentation",
                    "src": "1804:210:10",
                    "text": " @notice Return the ERC-20 token address for the given Meta-ERC20 token ID\n @param _id Meta-ERC20 token ID to get the corresponding ERC-20 token address\n @return token ERC-20 token address"
                  },
                  "functionSelector": "7358e9a5",
                  "id": 2798,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getIdAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2794,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2793,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2798,
                        "src": "2039:11:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2792,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2039:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2038:13:10"
                  },
                  "returnParameters": {
                    "id": 2797,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2796,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 2798,
                        "src": "2075:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2795,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2075:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2074:15:10"
                  },
                  "scope": 2837,
                  "src": "2017:74:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2799,
                    "nodeType": "StructuredDocumentation",
                    "src": "2095:68:10",
                    "text": " @notice Returns number of tokens currently registered"
                  },
                  "functionSelector": "9040a949",
                  "id": 2802,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2800,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2185:2:10"
                  },
                  "returnParameters": {
                    "id": 2801,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2201:0:10"
                  },
                  "scope": 2837,
                  "src": "2166:36:10",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2803,
                    "nodeType": "StructuredDocumentation",
                    "src": "2328:525:10",
                    "text": " @notice Withdraw ERC-20 tokens when receiving their ERC-1155 counterpart\n @param _operator  The address which called the `safeTransferFrom` function\n @param _from      The address which previously owned the token\n @param _id        The id of the token being transferred\n @param _value     The amount of tokens being transferred\n @param _data      Additional data with no specified format\n @return           `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 2818,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2814,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2805,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "2883:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2804,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2883:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2807,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "2902:21:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 2806,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2902:15:10",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2809,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "2925:11:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2808,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2925:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2811,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "2938:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2810,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2938:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2813,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "2954:20:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2812,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2954:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2882:94:10"
                  },
                  "returnParameters": {
                    "id": 2817,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2816,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2818,
                        "src": "2994:6:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2815,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2994:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2993:8:10"
                  },
                  "scope": 2837,
                  "src": "2856:146:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2819,
                    "nodeType": "StructuredDocumentation",
                    "src": "3006:578:10",
                    "text": " @notice Withdraw ERC-20 tokens when receiving their ERC-1155 counterpart\n @param _operator  The address which called the `safeBatchTransferFrom` function\n @param _from      The address which previously owned the token\n @param _ids       An array containing ids of each token being transferred\n @param _values    An array containing amounts of each token being transferred\n @param _data      Additional data with no specified format\n @return           `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`"
                  },
                  "functionSelector": "bc197c81",
                  "id": 2836,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2832,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2821,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 2836,
                        "src": "3619:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2820,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3619:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2823,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2836,
                        "src": "3638:21:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 2822,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3638:15:10",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2826,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 2836,
                        "src": "3661:23:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2824,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3661:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2825,
                          "nodeType": "ArrayTypeName",
                          "src": "3661:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2829,
                        "mutability": "mutable",
                        "name": "_values",
                        "nodeType": "VariableDeclaration",
                        "scope": 2836,
                        "src": "3686:26:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2827,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3686:7:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2828,
                          "nodeType": "ArrayTypeName",
                          "src": "3686:9:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2831,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 2836,
                        "src": "3714:20:10",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2830,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3714:5:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3618:117:10"
                  },
                  "returnParameters": {
                    "id": 2835,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2834,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2836,
                        "src": "3753:6:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2833,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3753:6:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3752:8:10"
                  },
                  "scope": 2837,
                  "src": "3587:174:10",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2838,
              "src": "89:3674:10"
            }
          ],
          "src": "0:3763:10"
        },
        "id": 10
      },
      "erc20-meta-token/contracts/mocks/ERC20Mock.sol": {
        "ast": {
          "absolutePath": "erc20-meta-token/contracts/mocks/ERC20Mock.sol",
          "exportedSymbols": {
            "ERC20": [
              3247
            ],
            "ERC20Mock": [
              3267
            ],
            "IERC20": [
              4035
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 3268,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2839,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:22:11"
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC20.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC20.sol",
              "id": 2840,
              "nodeType": "ImportDirective",
              "scope": 3268,
              "sourceUnit": 4036,
              "src": "24:62:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/SafeMath.sol",
              "file": "multi-token-standard/contracts/utils/SafeMath.sol",
              "id": 2841,
              "nodeType": "ImportDirective",
              "scope": 3268,
              "sourceUnit": 7468,
              "src": "87:59:11",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2843,
                    "name": "IERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4035,
                    "src": "711:6:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20_$4035",
                      "typeString": "contract IERC20"
                    }
                  },
                  "id": 2844,
                  "nodeType": "InheritanceSpecifier",
                  "src": "711:6:11"
                }
              ],
              "contractDependencies": [
                4035
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 2842,
                "nodeType": "StructuredDocumentation",
                "src": "149:543:11",
                "text": " @title Standard ERC20 token\n @dev Implementation of the basic standard token.\n https://eips.ethereum.org/EIPS/eip-20\n Originally based on code by FirstBlood:\n https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol\n This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for\n all accounts just by listening to said events. Note that this isn't required by the specification, and other\n compliant implementations may not do it."
              },
              "fullyImplemented": true,
              "id": 3247,
              "linearizedBaseContracts": [
                3247,
                4035
              ],
              "name": "ERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 2847,
                  "libraryName": {
                    "id": 2845,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7467,
                    "src": "728:8:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$7467",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "722:27:11",
                  "typeName": {
                    "id": 2846,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "741:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "constant": false,
                  "id": 2851,
                  "mutability": "mutable",
                  "name": "_balances",
                  "nodeType": "VariableDeclaration",
                  "scope": 3247,
                  "src": "753:46:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 2850,
                    "keyType": {
                      "id": 2848,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "762:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "753:28:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 2849,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "773:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 2857,
                  "mutability": "mutable",
                  "name": "_allowed",
                  "nodeType": "VariableDeclaration",
                  "scope": 3247,
                  "src": "804:66:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "typeName": {
                    "id": 2856,
                    "keyType": {
                      "id": 2852,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "813:7:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "804:49:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(address => uint256))"
                    },
                    "valueType": {
                      "id": 2855,
                      "keyType": {
                        "id": 2853,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "833:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "824:28:11",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "valueType": {
                        "id": 2854,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "844:7:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 2859,
                  "mutability": "mutable",
                  "name": "_totalSupply",
                  "nodeType": "VariableDeclaration",
                  "scope": 3247,
                  "src": "875:28:11",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2858,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "875:7:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    4002
                  ],
                  "body": {
                    "id": 2868,
                    "nodeType": "Block",
                    "src": "1030:30:11",
                    "statements": [
                      {
                        "expression": {
                          "id": 2866,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2859,
                          "src": "1043:12:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2865,
                        "id": 2867,
                        "nodeType": "Return",
                        "src": "1036:19:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2860,
                    "nodeType": "StructuredDocumentation",
                    "src": "908:57:11",
                    "text": " @dev Total number of tokens in existence"
                  },
                  "functionSelector": "18160ddd",
                  "id": 2869,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2862,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "998:8:11"
                  },
                  "parameters": {
                    "id": 2861,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "988:2:11"
                  },
                  "returnParameters": {
                    "id": 2865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2864,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2869,
                        "src": "1021:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2863,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1021:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1020:9:11"
                  },
                  "scope": 3247,
                  "src": "968:92:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4009
                  ],
                  "body": {
                    "id": 2882,
                    "nodeType": "Block",
                    "src": "1337:34:11",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 2878,
                            "name": "_balances",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2851,
                            "src": "1350:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2880,
                          "indexExpression": {
                            "id": 2879,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2872,
                            "src": "1360:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1350:16:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2877,
                        "id": 2881,
                        "nodeType": "Return",
                        "src": "1343:23:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2870,
                    "nodeType": "StructuredDocumentation",
                    "src": "1064:197:11",
                    "text": " @dev Gets the balance of the specified address.\n @param owner The address to query the balance of.\n @return A uint256 representing the amount owned by the passed address."
                  },
                  "functionSelector": "70a08231",
                  "id": 2883,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2874,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1305:8:11"
                  },
                  "parameters": {
                    "id": 2873,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2872,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 2883,
                        "src": "1283:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2871,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1283:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1282:15:11"
                  },
                  "returnParameters": {
                    "id": 2877,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2876,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2883,
                        "src": "1328:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2875,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1328:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1327:9:11"
                  },
                  "scope": 3247,
                  "src": "1264:107:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    4018
                  ],
                  "body": {
                    "id": 2900,
                    "nodeType": "Block",
                    "src": "1783:42:11",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 2894,
                              "name": "_allowed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2857,
                              "src": "1796:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 2896,
                            "indexExpression": {
                              "id": 2895,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2886,
                              "src": "1805:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1796:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 2898,
                          "indexExpression": {
                            "id": 2897,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2888,
                            "src": "1812:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1796:24:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2893,
                        "id": 2899,
                        "nodeType": "Return",
                        "src": "1789:31:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2884,
                    "nodeType": "StructuredDocumentation",
                    "src": "1375:315:11",
                    "text": " @dev Function to check the amount of tokens that an owner allowed to a spender.\n @param owner address The address which owns the funds.\n @param spender address The address which will spend the funds.\n @return A uint256 specifying the amount of tokens still available for the spender."
                  },
                  "functionSelector": "dd62ed3e",
                  "id": 2901,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2890,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1751:8:11"
                  },
                  "parameters": {
                    "id": 2889,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2886,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 2901,
                        "src": "1712:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2885,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1712:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2888,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 2901,
                        "src": "1727:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2887,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1727:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1711:32:11"
                  },
                  "returnParameters": {
                    "id": 2893,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2892,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2901,
                        "src": "1774:7:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2891,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1774:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1773:9:11"
                  },
                  "scope": 3247,
                  "src": "1693:132:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3977
                  ],
                  "body": {
                    "id": 2921,
                    "nodeType": "Block",
                    "src": "2060:60:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 2913,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2076:3:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2914,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2076:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2915,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2904,
                              "src": "2088:2:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2916,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2906,
                              "src": "2092:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2912,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3084,
                            "src": "2066:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2066:32:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2918,
                        "nodeType": "ExpressionStatement",
                        "src": "2066:32:11"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 2919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2111:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 2911,
                        "id": 2920,
                        "nodeType": "Return",
                        "src": "2104:11:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2902,
                    "nodeType": "StructuredDocumentation",
                    "src": "1829:152:11",
                    "text": " @dev Transfer token to a specified address\n @param to The address to transfer to.\n @param value The amount to be transferred."
                  },
                  "functionSelector": "a9059cbb",
                  "id": 2922,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2908,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2036:8:11"
                  },
                  "parameters": {
                    "id": 2907,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2904,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2922,
                        "src": "2002:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2903,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2002:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2906,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2922,
                        "src": "2014:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2905,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2014:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2001:27:11"
                  },
                  "returnParameters": {
                    "id": 2911,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2910,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2922,
                        "src": "2054:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2909,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2054:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2053:6:11"
                  },
                  "scope": 3247,
                  "src": "1984:136:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3986
                  ],
                  "body": {
                    "id": 2942,
                    "nodeType": "Block",
                    "src": "2824:64:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 2934,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2839:3:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2839:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2936,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2925,
                              "src": "2851:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2937,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2927,
                              "src": "2860:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2933,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3217,
                            "src": "2830:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2830:36:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2939,
                        "nodeType": "ExpressionStatement",
                        "src": "2830:36:11"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 2940,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2879:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 2932,
                        "id": 2941,
                        "nodeType": "Return",
                        "src": "2872:11:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2923,
                    "nodeType": "StructuredDocumentation",
                    "src": "2124:617:11",
                    "text": " @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\n Beware that changing an allowance with this method brings the risk that someone may use both the old\n and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\n race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent."
                  },
                  "functionSelector": "095ea7b3",
                  "id": 2943,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2929,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2800:8:11"
                  },
                  "parameters": {
                    "id": 2928,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2925,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 2943,
                        "src": "2761:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2924,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2761:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2927,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2943,
                        "src": "2778:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2926,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2778:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2760:32:11"
                  },
                  "returnParameters": {
                    "id": 2932,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2931,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2943,
                        "src": "2818:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2930,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2818:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2817:6:11"
                  },
                  "scope": 3247,
                  "src": "2744:144:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3997
                  ],
                  "body": {
                    "id": 2979,
                    "nodeType": "Block",
                    "src": "3434:125:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2957,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2946,
                              "src": "3450:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2958,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2948,
                              "src": "3456:2:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2959,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2950,
                              "src": "3460:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2956,
                            "name": "_transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3084,
                            "src": "3440:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3440:26:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2961,
                        "nodeType": "ExpressionStatement",
                        "src": "3440:26:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2963,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2946,
                              "src": "3481:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 2964,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3487:3:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3487:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 2973,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2950,
                                  "src": "3530:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 2966,
                                      "name": "_allowed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2857,
                                      "src": "3499:8:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 2968,
                                    "indexExpression": {
                                      "id": 2967,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2946,
                                      "src": "3508:4:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3499:14:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 2971,
                                  "indexExpression": {
                                    "expression": {
                                      "id": 2969,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "3514:3:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2970,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "3514:10:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3499:26:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7418,
                                "src": "3499:30:11",
                                "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": 2974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3499:37:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2962,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3217,
                            "src": "3472:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 2975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3472:65:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2976,
                        "nodeType": "ExpressionStatement",
                        "src": "3472:65:11"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 2977,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3550:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 2955,
                        "id": 2978,
                        "nodeType": "Return",
                        "src": "3543:11:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2944,
                    "nodeType": "StructuredDocumentation",
                    "src": "2892:445:11",
                    "text": " @dev Transfer tokens from one address to another.\n Note that while this function emits an Approval event, this is not required as per the specification,\n and other compliant implementations may not emit the event.\n @param from address The address which you want to send tokens from\n @param to address The address which you want to transfer to\n @param value uint256 the amount of tokens to be transferred"
                  },
                  "functionSelector": "23b872dd",
                  "id": 2980,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 2952,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3410:8:11"
                  },
                  "parameters": {
                    "id": 2951,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2946,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 2980,
                        "src": "3362:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2945,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3362:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2948,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 2980,
                        "src": "3376:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2947,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3376:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2950,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 2980,
                        "src": "3388:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2949,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3388:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3361:41:11"
                  },
                  "returnParameters": {
                    "id": 2955,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2954,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 2980,
                        "src": "3428:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2953,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3428:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3427:6:11"
                  },
                  "scope": 3247,
                  "src": "3340:219:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3007,
                    "nodeType": "Block",
                    "src": "4146:104:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 2991,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4161:3:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4161:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 2993,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2983,
                              "src": "4173:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 3001,
                                  "name": "addedValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2985,
                                  "src": "4216:10:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 2994,
                                      "name": "_allowed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2857,
                                      "src": "4182:8:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 2997,
                                    "indexExpression": {
                                      "expression": {
                                        "id": 2995,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "4191:3:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 2996,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "4191:10:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4182:20:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 2999,
                                  "indexExpression": {
                                    "id": 2998,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2983,
                                    "src": "4203:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4182:29:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7444,
                                "src": "4182:33:11",
                                "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": 3002,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4182:45:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2990,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3217,
                            "src": "4152:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3003,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4152:76:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3004,
                        "nodeType": "ExpressionStatement",
                        "src": "4152:76:11"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 3005,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4241:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 2989,
                        "id": 3006,
                        "nodeType": "Return",
                        "src": "4234:11:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2981,
                    "nodeType": "StructuredDocumentation",
                    "src": "3563:494:11",
                    "text": " @dev Increase the amount of tokens that an owner allowed to a spender.\n approve should be called when _allowed[msg.sender][spender] == 0. To increment\n allowed value is better to use this function to avoid 2 calls (and wait until\n the first transaction is mined)\n From MonolithDAO Token.sol\n Emits an Approval event.\n @param spender The address which will spend the funds.\n @param addedValue The amount of tokens to increase the allowance by."
                  },
                  "functionSelector": "39509351",
                  "id": 3008,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "increaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2986,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2983,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 3008,
                        "src": "4087:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2982,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4087:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2985,
                        "mutability": "mutable",
                        "name": "addedValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 3008,
                        "src": "4104:18:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2984,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4104:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4086:37:11"
                  },
                  "returnParameters": {
                    "id": 2989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2988,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3008,
                        "src": "4140:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2987,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4140:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4139:6:11"
                  },
                  "scope": 3247,
                  "src": "4060:190:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3035,
                    "nodeType": "Block",
                    "src": "4847:109:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 3019,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4862:3:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3020,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4862:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3021,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3011,
                              "src": "4874:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 3029,
                                  "name": "subtractedValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3013,
                                  "src": "4917:15:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3022,
                                      "name": "_allowed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2857,
                                      "src": "4883:8:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3025,
                                    "indexExpression": {
                                      "expression": {
                                        "id": 3023,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "4892:3:11",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 3024,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "4892:10:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4883:20:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3027,
                                  "indexExpression": {
                                    "id": 3026,
                                    "name": "spender",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3011,
                                    "src": "4904:7:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4883:29:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3028,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7418,
                                "src": "4883:33:11",
                                "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": 3030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4883:50:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3018,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3217,
                            "src": "4853:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4853:81:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3032,
                        "nodeType": "ExpressionStatement",
                        "src": "4853:81:11"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 3033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4947:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 3017,
                        "id": 3034,
                        "nodeType": "Return",
                        "src": "4940:11:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3009,
                    "nodeType": "StructuredDocumentation",
                    "src": "4254:499:11",
                    "text": " @dev Decrease the amount of tokens that an owner allowed to a spender.\n approve should be called when _allowed[msg.sender][spender] == 0. To decrement\n allowed value is better to use this function to avoid 2 calls (and wait until\n the first transaction is mined)\n From MonolithDAO Token.sol\n Emits an Approval event.\n @param spender The address which will spend the funds.\n @param subtractedValue The amount of tokens to decrease the allowance by."
                  },
                  "functionSelector": "a457c2d7",
                  "id": 3036,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "decreaseAllowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3011,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 3036,
                        "src": "4783:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3010,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4783:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3013,
                        "mutability": "mutable",
                        "name": "subtractedValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 3036,
                        "src": "4800:23:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3012,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4800:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4782:42:11"
                  },
                  "returnParameters": {
                    "id": 3017,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3016,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3036,
                        "src": "4841:4:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3015,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4841:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4840:6:11"
                  },
                  "scope": 3247,
                  "src": "4756:200:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3083,
                    "nodeType": "Block",
                    "src": "5235:169:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3052,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3047,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3041,
                                "src": "5249:2:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3050,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5263:1:11",
                                    "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": 3049,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5255:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3048,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5255:7:11",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3051,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5255:10:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5249:16:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3046,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5241:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3053,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5241:25:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3054,
                        "nodeType": "ExpressionStatement",
                        "src": "5241:25:11"
                      },
                      {
                        "expression": {
                          "id": 3064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3055,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2851,
                              "src": "5273:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3057,
                            "indexExpression": {
                              "id": 3056,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3039,
                              "src": "5283:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5273:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3062,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3043,
                                "src": "5311:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "id": 3058,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2851,
                                  "src": "5291:9:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3060,
                                "indexExpression": {
                                  "id": 3059,
                                  "name": "from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3039,
                                  "src": "5301:4:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5291:15:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7418,
                              "src": "5291:19:11",
                              "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": 3063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5291:26:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5273:44:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3065,
                        "nodeType": "ExpressionStatement",
                        "src": "5273:44:11"
                      },
                      {
                        "expression": {
                          "id": 3075,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3066,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2851,
                              "src": "5323:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3068,
                            "indexExpression": {
                              "id": 3067,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3041,
                              "src": "5333:2:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5323:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3073,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3043,
                                "src": "5357:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "id": 3069,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2851,
                                  "src": "5339:9:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3071,
                                "indexExpression": {
                                  "id": 3070,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3041,
                                  "src": "5349:2:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5339:13:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7444,
                              "src": "5339:17:11",
                              "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": 3074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5339:24:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5323:40:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3076,
                        "nodeType": "ExpressionStatement",
                        "src": "5323:40:11"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3078,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3039,
                              "src": "5383:4:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3079,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3041,
                              "src": "5389:2:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3080,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3043,
                              "src": "5393:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3077,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4026,
                            "src": "5374:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5374:25:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3082,
                        "nodeType": "EmitStatement",
                        "src": "5369:30:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3037,
                    "nodeType": "StructuredDocumentation",
                    "src": "4960:203:11",
                    "text": " @dev Transfer token for a specified addresses\n @param from The address to transfer from.\n @param to The address to transfer to.\n @param value The amount to be transferred."
                  },
                  "id": 3084,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3039,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3084,
                        "src": "5185:12:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3038,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5185:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3041,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3084,
                        "src": "5199:10:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3040,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5199:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3043,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3084,
                        "src": "5211:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3042,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5211:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5184:41:11"
                  },
                  "returnParameters": {
                    "id": 3045,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5235:0:11"
                  },
                  "scope": 3247,
                  "src": "5166:238:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3128,
                    "nodeType": "Block",
                    "src": "5793:189:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3098,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3093,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3087,
                                "src": "5807:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3096,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5826:1:11",
                                    "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": 3095,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5818:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3094,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5818:7:11",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3097,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5818:10:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5807:21:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3092,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5799:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5799:30:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3100,
                        "nodeType": "ExpressionStatement",
                        "src": "5799:30:11"
                      },
                      {
                        "expression": {
                          "id": 3106,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3101,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2859,
                            "src": "5836:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3104,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3089,
                                "src": "5868:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 3102,
                                "name": "_totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2859,
                                "src": "5851:12:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7444,
                              "src": "5851:16:11",
                              "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": 3105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5851:23:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5836:38:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3107,
                        "nodeType": "ExpressionStatement",
                        "src": "5836:38:11"
                      },
                      {
                        "expression": {
                          "id": 3117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3108,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2851,
                              "src": "5880:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3110,
                            "indexExpression": {
                              "id": 3109,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3087,
                              "src": "5890:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5880:18:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3115,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3089,
                                "src": "5924:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "id": 3111,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2851,
                                  "src": "5901:9:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3113,
                                "indexExpression": {
                                  "id": 3112,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3087,
                                  "src": "5911:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5901:18:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3114,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7444,
                              "src": "5901:22:11",
                              "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": 3116,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5901:29:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5880:50:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3118,
                        "nodeType": "ExpressionStatement",
                        "src": "5880:50:11"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 3122,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5958:1:11",
                                  "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": 3121,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5950:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3120,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5950:7:11",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3123,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5950:10:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3124,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3087,
                              "src": "5962:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3125,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3089,
                              "src": "5971:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3119,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4026,
                            "src": "5941:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3126,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5941:36:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3127,
                        "nodeType": "EmitStatement",
                        "src": "5936:41:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3085,
                    "nodeType": "StructuredDocumentation",
                    "src": "5408:326:11",
                    "text": " @dev Internal function that mints an amount of the token and assigns it to\n an account. This encapsulates the modification of balances such that the\n proper events are emitted.\n @param account The account that will receive the created tokens.\n @param value The amount that will be created."
                  },
                  "id": 3129,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3090,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3087,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 3129,
                        "src": "5752:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3086,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5752:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3089,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3129,
                        "src": "5769:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3088,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5769:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5751:32:11"
                  },
                  "returnParameters": {
                    "id": 3091,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5793:0:11"
                  },
                  "scope": 3247,
                  "src": "5737:245:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3173,
                    "nodeType": "Block",
                    "src": "6255:189:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3138,
                                "name": "account",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3132,
                                "src": "6269:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3141,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6288:1:11",
                                    "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": 3140,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6280:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3139,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6280:7:11",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6280:10:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6269:21:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3137,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6261:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6261:30:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3145,
                        "nodeType": "ExpressionStatement",
                        "src": "6261:30:11"
                      },
                      {
                        "expression": {
                          "id": 3151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3146,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2859,
                            "src": "6298:12:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3149,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3134,
                                "src": "6330:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "id": 3147,
                                "name": "_totalSupply",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2859,
                                "src": "6313:12:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7418,
                              "src": "6313:16:11",
                              "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": 3150,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6313:23:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6298:38:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3152,
                        "nodeType": "ExpressionStatement",
                        "src": "6298:38:11"
                      },
                      {
                        "expression": {
                          "id": 3162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3153,
                              "name": "_balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2851,
                              "src": "6342:9:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3155,
                            "indexExpression": {
                              "id": 3154,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3132,
                              "src": "6352:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6342:18:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3160,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3134,
                                "src": "6386:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "id": 3156,
                                  "name": "_balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2851,
                                  "src": "6363:9:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3158,
                                "indexExpression": {
                                  "id": 3157,
                                  "name": "account",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3132,
                                  "src": "6373:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "6363:18:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7418,
                              "src": "6363:22:11",
                              "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": 3161,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6363:29:11",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6342:50:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3163,
                        "nodeType": "ExpressionStatement",
                        "src": "6342:50:11"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3165,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3132,
                              "src": "6412:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 3168,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6429:1:11",
                                  "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": 3167,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6421:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3166,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6421:7:11",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3169,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6421:10:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3170,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3134,
                              "src": "6433:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3164,
                            "name": "Transfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4026,
                            "src": "6403:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6403:36:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3172,
                        "nodeType": "EmitStatement",
                        "src": "6398:41:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3130,
                    "nodeType": "StructuredDocumentation",
                    "src": "5986:210:11",
                    "text": " @dev Internal function that burns an amount of the token of a given\n account.\n @param account The account whose tokens will be burnt.\n @param value The amount that will be burnt."
                  },
                  "id": 3174,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3135,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3132,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 3174,
                        "src": "6214:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3131,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6214:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3134,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3174,
                        "src": "6231:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3133,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6231:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6213:32:11"
                  },
                  "returnParameters": {
                    "id": 3136,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6255:0:11"
                  },
                  "scope": 3247,
                  "src": "6199:245:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3216,
                    "nodeType": "Block",
                    "src": "6774:156:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3185,
                                "name": "spender",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3179,
                                "src": "6788:7:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3188,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6807:1:11",
                                    "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": 3187,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6799:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3186,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6799:7:11",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3189,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6799:10:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6788:21:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3184,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6780:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3191,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6780:30:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3192,
                        "nodeType": "ExpressionStatement",
                        "src": "6780:30:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3194,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3177,
                                "src": "6824:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 3197,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6841:1:11",
                                    "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": 3196,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6833:7:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3195,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6833:7:11",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3198,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6833:10:11",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6824:19:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 3193,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6816:7:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 3200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6816:28:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3201,
                        "nodeType": "ExpressionStatement",
                        "src": "6816:28:11"
                      },
                      {
                        "expression": {
                          "id": 3208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 3202,
                                "name": "_allowed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2857,
                                "src": "6851:8:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 3205,
                              "indexExpression": {
                                "id": 3203,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3177,
                                "src": "6860:5:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6851:15:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3206,
                            "indexExpression": {
                              "id": 3204,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3179,
                              "src": "6867:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6851:24:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3207,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3181,
                            "src": "6878:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6851:32:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3209,
                        "nodeType": "ExpressionStatement",
                        "src": "6851:32:11"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 3211,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3177,
                              "src": "6903:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3212,
                              "name": "spender",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3179,
                              "src": "6910:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3213,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3181,
                              "src": "6919:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3210,
                            "name": "Approval",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4034,
                            "src": "6894:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6894:31:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3215,
                        "nodeType": "EmitStatement",
                        "src": "6889:36:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3175,
                    "nodeType": "StructuredDocumentation",
                    "src": "6448:249:11",
                    "text": " @dev Approve an address to spend another addresses' tokens.\n @param owner The address that owns the tokens.\n @param spender The address that will spend the tokens.\n @param value The number of tokens that can be spent."
                  },
                  "id": 3217,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3182,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3177,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 3217,
                        "src": "6718:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3176,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6718:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3179,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 3217,
                        "src": "6733:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3178,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6733:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3181,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3217,
                        "src": "6750:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3180,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6750:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6717:47:11"
                  },
                  "returnParameters": {
                    "id": 3183,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6774:0:11"
                  },
                  "scope": 3247,
                  "src": "6700:230:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3245,
                    "nodeType": "Block",
                    "src": "7368:109:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3226,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3220,
                              "src": "7380:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3227,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3222,
                              "src": "7389:5:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3225,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3174,
                            "src": "7374:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 3228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7374:21:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3229,
                        "nodeType": "ExpressionStatement",
                        "src": "7374:21:11"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3231,
                              "name": "account",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3220,
                              "src": "7410:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 3232,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7419:3:11",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3233,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7419:10:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 3241,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3222,
                                  "src": "7465:5:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 3234,
                                      "name": "_allowed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2857,
                                      "src": "7431:8:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(address => uint256))"
                                      }
                                    },
                                    "id": 3236,
                                    "indexExpression": {
                                      "id": 3235,
                                      "name": "account",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3220,
                                      "src": "7440:7:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7431:17:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 3239,
                                  "indexExpression": {
                                    "expression": {
                                      "id": 3237,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "7449:3:11",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 3238,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "7449:10:11",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7431:29:11",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 3240,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7418,
                                "src": "7431:33:11",
                                "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": 3242,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7431:40:11",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3230,
                            "name": "_approve",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3217,
                            "src": "7401:8:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7401:71:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3244,
                        "nodeType": "ExpressionStatement",
                        "src": "7401:71:11"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3218,
                    "nodeType": "StructuredDocumentation",
                    "src": "6934:371:11",
                    "text": " @dev Internal function that burns an amount of the token of a given\n account, deducting from the sender's allowance for said account. Uses the\n internal burn function.\n Emits an Approval event (reflecting the reduced allowance).\n @param account The account whose tokens will be burnt.\n @param value The amount that will be burnt."
                  },
                  "id": 3246,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burnFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3223,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3220,
                        "mutability": "mutable",
                        "name": "account",
                        "nodeType": "VariableDeclaration",
                        "scope": 3246,
                        "src": "7327:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3219,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7327:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3222,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3246,
                        "src": "7344:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3221,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7344:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7326:32:11"
                  },
                  "returnParameters": {
                    "id": 3224,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7368:0:11"
                  },
                  "scope": 3247,
                  "src": "7308:169:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3268,
              "src": "693:6787:11"
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3248,
                    "name": "ERC20",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3247,
                    "src": "7504:5:11",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC20_$3247",
                      "typeString": "contract ERC20"
                    }
                  },
                  "id": 3249,
                  "nodeType": "InheritanceSpecifier",
                  "src": "7504:5:11"
                }
              ],
              "contractDependencies": [
                3247,
                4035
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 3267,
              "linearizedBaseContracts": [
                3267,
                3247,
                4035
              ],
              "name": "ERC20Mock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 3252,
                    "nodeType": "Block",
                    "src": "7535:3:11",
                    "statements": []
                  },
                  "id": 3253,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3250,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7525:2:11"
                  },
                  "returnParameters": {
                    "id": 3251,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7535:0:11"
                  },
                  "scope": 3267,
                  "src": "7514:24:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3265,
                    "nodeType": "Block",
                    "src": "7602:35:11",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3261,
                              "name": "_address",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3255,
                              "src": "7614:8:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3262,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3257,
                              "src": "7624:7:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3260,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3129,
                            "src": "7608:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 3263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7608:24:11",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3264,
                        "nodeType": "ExpressionStatement",
                        "src": "7608:24:11"
                      }
                    ]
                  },
                  "functionSelector": "378934b4",
                  "id": 3266,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mockMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3258,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3255,
                        "mutability": "mutable",
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 3266,
                        "src": "7560:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3254,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7560:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3257,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3266,
                        "src": "7578:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3256,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7578:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7559:35:11"
                  },
                  "returnParameters": {
                    "id": 3259,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7602:0:11"
                  },
                  "scope": 3267,
                  "src": "7542:95:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 3268,
              "src": "7482:158:11"
            }
          ],
          "src": "0:7643:11"
        },
        "id": 11
      },
      "erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol": {
        "ast": {
          "absolutePath": "erc20-meta-token/contracts/wrapper/MetaERC20Wrapper.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155": [
              4812
            ],
            "ERC1155Meta": [
              5439
            ],
            "ERC1155MintBurn": [
              5902
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "IERC1271Wallet": [
              3953
            ],
            "IERC165": [
              3965
            ],
            "IERC20": [
              4035
            ],
            "LibBytes": [
              7292
            ],
            "LibEIP712": [
              7328
            ],
            "MetaERC20Wrapper": [
              3764
            ],
            "SafeMath": [
              7467
            ],
            "SignatureValidator": [
              7731
            ]
          },
          "id": 3765,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3269,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:22:12"
            },
            {
              "id": 3270,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "23:33:12"
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC20.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC20.sol",
              "id": 3271,
              "nodeType": "ImportDirective",
              "scope": 3765,
              "sourceUnit": 4036,
              "src": "58:62:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC165.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC165.sol",
              "id": 3272,
              "nodeType": "ImportDirective",
              "scope": 3765,
              "sourceUnit": 3966,
              "src": "121:63:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC1155.sol",
              "id": 3273,
              "nodeType": "ImportDirective",
              "scope": 3765,
              "sourceUnit": 3876,
              "src": "185:64:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol",
              "file": "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol",
              "id": 3274,
              "nodeType": "ImportDirective",
              "scope": 3765,
              "sourceUnit": 3931,
              "src": "250:77:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155Meta.sol",
              "file": "multi-token-standard/contracts/tokens/ERC1155/ERC1155Meta.sol",
              "id": 3275,
              "nodeType": "ImportDirective",
              "scope": 3765,
              "sourceUnit": 5440,
              "src": "328:71:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155MintBurn.sol",
              "file": "multi-token-standard/contracts/tokens/ERC1155/ERC1155MintBurn.sol",
              "id": 3276,
              "nodeType": "ImportDirective",
              "scope": 3765,
              "sourceUnit": 5903,
              "src": "400:75:12",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3278,
                    "name": "ERC1155Meta",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5439,
                    "src": "775:11:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155Meta_$5439",
                      "typeString": "contract ERC1155Meta"
                    }
                  },
                  "id": 3279,
                  "nodeType": "InheritanceSpecifier",
                  "src": "775:11:12"
                },
                {
                  "baseName": {
                    "id": 3280,
                    "name": "ERC1155MintBurn",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5902,
                    "src": "788:15:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155MintBurn_$5902",
                      "typeString": "contract ERC1155MintBurn"
                    }
                  },
                  "id": 3281,
                  "nodeType": "InheritanceSpecifier",
                  "src": "788:15:12"
                }
              ],
              "contractDependencies": [
                3875,
                4812,
                5439,
                5902,
                7229,
                7328,
                7731
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 3277,
                "nodeType": "StructuredDocumentation",
                "src": "478:267:12",
                "text": " @notice Allows users to wrap any amount of any ERC-20 token with a 1:1 ratio\n   of corresponding ERC-1155 tokens with native metaTransaction methods. Each\n   ERC-20 is assigned an ERC-1155 id for more efficient CALLDATA usage when\n   doing transfers."
              },
              "fullyImplemented": true,
              "id": 3764,
              "linearizedBaseContracts": [
                3764,
                5902,
                5439,
                7731,
                7328,
                4812,
                7229,
                3875
              ],
              "name": "MetaERC20Wrapper",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 3284,
                  "mutability": "mutable",
                  "name": "nTokens",
                  "nodeType": "VariableDeclaration",
                  "scope": 3764,
                  "src": "824:28:12",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3282,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "824:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "31",
                    "id": 3283,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "851:1:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "1"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3287,
                  "mutability": "constant",
                  "name": "ETH_ID",
                  "nodeType": "VariableDeclaration",
                  "scope": 3764,
                  "src": "918:38:12",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3285,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "918:7:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "307831",
                    "id": 3286,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "953:3:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1_by_1",
                      "typeString": "int_const 1"
                    },
                    "value": "0x1"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 3293,
                  "mutability": "constant",
                  "name": "ETH_ADDRESS",
                  "nodeType": "VariableDeclaration",
                  "scope": 3764,
                  "src": "1014:52:12",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3288,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1014:7:12",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "arguments": [
                      {
                        "hexValue": "307831",
                        "id": 3291,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1062:3:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "0x1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 3290,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1054:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 3289,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1054:7:12",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 3292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1054:12:12",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3297,
                  "mutability": "mutable",
                  "name": "addressToID",
                  "nodeType": "VariableDeclaration",
                  "scope": 3764,
                  "src": "1124:49:12",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 3296,
                    "keyType": {
                      "id": 3294,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1133:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1124:28:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 3295,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1144:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3301,
                  "mutability": "mutable",
                  "name": "IDtoAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3764,
                  "src": "1231:49:12",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                    "typeString": "mapping(uint256 => address)"
                  },
                  "typeName": {
                    "id": 3300,
                    "keyType": {
                      "id": 3298,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1240:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1231:28:12",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                      "typeString": "mapping(uint256 => address)"
                    },
                    "valueType": {
                      "id": 3299,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1251:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "id": 3307,
                  "name": "TokenRegistration",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3306,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3303,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "token_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 3307,
                        "src": "1484:21:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3302,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1484:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3305,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "token_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3307,
                        "src": "1507:16:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3304,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1507:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1483:41:12"
                  },
                  "src": "1460:65:12"
                },
                {
                  "body": {
                    "id": 3322,
                    "nodeType": "Block",
                    "src": "1714:83:12",
                    "statements": [
                      {
                        "expression": {
                          "id": 3314,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3310,
                              "name": "addressToID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3297,
                              "src": "1720:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3312,
                            "indexExpression": {
                              "id": 3311,
                              "name": "ETH_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3293,
                              "src": "1732:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1720:24:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3313,
                            "name": "ETH_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3287,
                            "src": "1747:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1720:33:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3315,
                        "nodeType": "ExpressionStatement",
                        "src": "1720:33:12"
                      },
                      {
                        "expression": {
                          "id": 3320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 3316,
                              "name": "IDtoAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3301,
                              "src": "1759:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 3318,
                            "indexExpression": {
                              "id": 3317,
                              "name": "ETH_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3287,
                              "src": "1771:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1759:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 3319,
                            "name": "ETH_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3293,
                            "src": "1781:11:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1759:33:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3321,
                        "nodeType": "ExpressionStatement",
                        "src": "1759:33:12"
                      }
                    ]
                  },
                  "id": 3323,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3308,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1704:2:12"
                  },
                  "returnParameters": {
                    "id": 3309,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1714:0:12"
                  },
                  "scope": 3764,
                  "src": "1693:104:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3335,
                    "nodeType": "Block",
                    "src": "2075:95:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3328,
                              "name": "ETH_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3293,
                              "src": "2130:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 3329,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2143:3:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2143:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "expression": {
                                "id": 3331,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2155:3:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "src": "2155:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3327,
                            "name": "deposit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3453,
                            "src": "2122:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256)"
                            }
                          },
                          "id": 3333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2122:43:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3334,
                        "nodeType": "ExpressionStatement",
                        "src": "2122:43:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3324,
                    "nodeType": "StructuredDocumentation",
                    "src": "1922:122:12",
                    "text": " Fallback function\n @dev Deposit ETH in this contract to receive wrapped ETH\n No parameters provided"
                  },
                  "id": 3336,
                  "implemented": true,
                  "kind": "receive",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3325,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2055:2:12"
                  },
                  "returnParameters": {
                    "id": 3326,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2075:0:12"
                  },
                  "scope": 3764,
                  "src": "2047:123:12",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3452,
                    "nodeType": "Block",
                    "src": "2674:1214:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3347,
                                "name": "_recipient",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3341,
                                "src": "2688:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "307830",
                                    "id": 3350,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2710:3:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0x0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3349,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2702:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3348,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2702:7:12",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2702:12:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2688:26:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d657461455243323057726170706572236465706f7369743a20494e56414c49445f524543495049454e54",
                              "id": 3353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2716:45:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_19a3130b3f25d805cc5717b6ec577f621b2eda36caf4381b0de60002320d245d",
                                "typeString": "literal_string \"MetaERC20Wrapper#deposit: INVALID_RECIPIENT\""
                              },
                              "value": "MetaERC20Wrapper#deposit: INVALID_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_19a3130b3f25d805cc5717b6ec577f621b2eda36caf4381b0de60002320d245d",
                                "typeString": "literal_string \"MetaERC20Wrapper#deposit: INVALID_RECIPIENT\""
                              }
                            ],
                            "id": 3346,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2680:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3354,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2680:82:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3355,
                        "nodeType": "ExpressionStatement",
                        "src": "2680:82:12"
                      },
                      {
                        "assignments": [
                          3357
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3357,
                            "mutability": "mutable",
                            "name": "id",
                            "nodeType": "VariableDeclaration",
                            "scope": 3452,
                            "src": "2814:10:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3356,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2814:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3358,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2814:10:12"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3359,
                            "name": "_token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3339,
                            "src": "2871:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3360,
                            "name": "ETH_ADDRESS",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3293,
                            "src": "2881:11:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2871:21:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3443,
                          "nodeType": "Block",
                          "src": "3709:111:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3435,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3432,
                                      "name": "_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3343,
                                      "src": "3725:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 3433,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "3735:3:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 3434,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "value",
                                      "nodeType": "MemberAccess",
                                      "src": "3735:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3725:19:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4d657461455243323057726170706572236465706f7369743a20494e434f52524543545f4d53475f56414c5545",
                                    "id": 3436,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3746:47:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_18ab744e6275fc2611ea3f469ab0998d462afdc8fb55fa1f0baa2f290c1dd8e8",
                                      "typeString": "literal_string \"MetaERC20Wrapper#deposit: INCORRECT_MSG_VALUE\""
                                    },
                                    "value": "MetaERC20Wrapper#deposit: INCORRECT_MSG_VALUE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_18ab744e6275fc2611ea3f469ab0998d462afdc8fb55fa1f0baa2f290c1dd8e8",
                                      "typeString": "literal_string \"MetaERC20Wrapper#deposit: INCORRECT_MSG_VALUE\""
                                    }
                                  ],
                                  "id": 3431,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "3717:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3437,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3717:77:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3438,
                              "nodeType": "ExpressionStatement",
                              "src": "3717:77:12"
                            },
                            {
                              "expression": {
                                "id": 3441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 3439,
                                  "name": "id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3357,
                                  "src": "3802:2:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 3440,
                                  "name": "ETH_ID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3287,
                                  "src": "3807:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3802:11:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 3442,
                              "nodeType": "ExpressionStatement",
                              "src": "3802:11:12"
                            }
                          ]
                        },
                        "id": 3444,
                        "nodeType": "IfStatement",
                        "src": "2867:953:12",
                        "trueBody": {
                          "id": 3430,
                          "nodeType": "Block",
                          "src": "2894:809:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3366,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 3363,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "2945:3:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 3364,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "value",
                                      "nodeType": "MemberAccess",
                                      "src": "2945:9:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 3365,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2958:1:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "2945:14:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4d657461455243323057726170706572236465706f7369743a204e4f4e5f4e554c4c5f4d53475f56414c5545",
                                    "id": 3367,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2961:46:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_52e2325dc5a388253b111b94bbca717f4138da2fa7211fcfb41ba013239fcc9e",
                                      "typeString": "literal_string \"MetaERC20Wrapper#deposit: NON_NULL_MSG_VALUE\""
                                    },
                                    "value": "MetaERC20Wrapper#deposit: NON_NULL_MSG_VALUE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_52e2325dc5a388253b111b94bbca717f4138da2fa7211fcfb41ba013239fcc9e",
                                      "typeString": "literal_string \"MetaERC20Wrapper#deposit: NON_NULL_MSG_VALUE\""
                                    }
                                  ],
                                  "id": 3362,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "2937:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2937:71:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3369,
                              "nodeType": "ExpressionStatement",
                              "src": "2937:71:12"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 3374,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "3044:3:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 3375,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "3044:10:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "id": 3378,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "3064:4:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MetaERC20Wrapper_$3764",
                                          "typeString": "contract MetaERC20Wrapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MetaERC20Wrapper_$3764",
                                          "typeString": "contract MetaERC20Wrapper"
                                        }
                                      ],
                                      "id": 3377,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3056:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3376,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3056:7:12",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3379,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3056:13:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3380,
                                    "name": "_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3343,
                                    "src": "3071:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 3371,
                                        "name": "_token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3339,
                                        "src": "3023:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 3370,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4035,
                                      "src": "3016:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4035_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 3372,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3016:14:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4035",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 3373,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transferFrom",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3997,
                                  "src": "3016:27:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 3381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3016:62:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 3382,
                              "nodeType": "ExpressionStatement",
                              "src": "3016:62:12"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 3384,
                                      "name": "checkSuccess",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3732,
                                      "src": "3094:12:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$",
                                        "typeString": "function () pure returns (bool)"
                                      }
                                    },
                                    "id": 3385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3094:14:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4d657461455243323057726170706572236465706f7369743a205452414e534645525f4641494c4544",
                                    "id": 3386,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3110:43:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_60c012ac410bc331a9c5c1e4b0a28751cc566065127914b00b9ee80212c2c0ff",
                                      "typeString": "literal_string \"MetaERC20Wrapper#deposit: TRANSFER_FAILED\""
                                    },
                                    "value": "MetaERC20Wrapper#deposit: TRANSFER_FAILED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_60c012ac410bc331a9c5c1e4b0a28751cc566065127914b00b9ee80212c2c0ff",
                                      "typeString": "literal_string \"MetaERC20Wrapper#deposit: TRANSFER_FAILED\""
                                    }
                                  ],
                                  "id": 3383,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "3086:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3086:68:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3388,
                              "nodeType": "ExpressionStatement",
                              "src": "3086:68:12"
                            },
                            {
                              "assignments": [
                                3390
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3390,
                                  "mutability": "mutable",
                                  "name": "addressId",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3430,
                                  "src": "3194:17:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3389,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3194:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3394,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3391,
                                  "name": "addressToID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3297,
                                  "src": "3214:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 3393,
                                "indexExpression": {
                                  "id": 3392,
                                  "name": "_token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3339,
                                  "src": "3226:6:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3214:19:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3194:39:12"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3397,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3395,
                                  "name": "addressId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3390,
                                  "src": "3287:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "30",
                                  "id": 3396,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3300:1:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "3287:14:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 3428,
                                "nodeType": "Block",
                                "src": "3663:33:12",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 3426,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 3424,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3357,
                                        "src": "3673:2:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 3425,
                                        "name": "addressId",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3390,
                                        "src": "3678:9:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3673:14:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3427,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3673:14:12"
                                  }
                                ]
                              },
                              "id": 3429,
                              "nodeType": "IfStatement",
                              "src": "3283:413:12",
                              "trueBody": {
                                "id": 3423,
                                "nodeType": "Block",
                                "src": "3303:354:12",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 3400,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 3398,
                                        "name": "nTokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3284,
                                        "src": "3313:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "+=",
                                      "rightHandSide": {
                                        "hexValue": "31",
                                        "id": 3399,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3324:1:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "3313:12:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3401,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3313:12:12"
                                  },
                                  {
                                    "expression": {
                                      "id": 3404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 3402,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3357,
                                        "src": "3388:2:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 3403,
                                        "name": "nTokens",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3284,
                                        "src": "3393:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3388:12:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3405,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3388:12:12"
                                  },
                                  {
                                    "expression": {
                                      "id": 3410,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 3406,
                                          "name": "IDtoAddress",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3301,
                                          "src": "3464:11:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                            "typeString": "mapping(uint256 => address)"
                                          }
                                        },
                                        "id": 3408,
                                        "indexExpression": {
                                          "id": 3407,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3357,
                                          "src": "3476:2:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "3464:15:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 3409,
                                        "name": "_token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3339,
                                        "src": "3482:6:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "3464:24:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 3411,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3464:24:12"
                                  },
                                  {
                                    "expression": {
                                      "id": 3416,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "baseExpression": {
                                          "id": 3412,
                                          "name": "addressToID",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3297,
                                          "src": "3525:11:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                            "typeString": "mapping(address => uint256)"
                                          }
                                        },
                                        "id": 3414,
                                        "indexExpression": {
                                          "id": 3413,
                                          "name": "_token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3339,
                                          "src": "3537:6:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "3525:19:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 3415,
                                        "name": "id",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3357,
                                        "src": "3547:2:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "3525:24:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3417,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3525:24:12"
                                  },
                                  {
                                    "eventCall": {
                                      "arguments": [
                                        {
                                          "id": 3419,
                                          "name": "_token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3339,
                                          "src": "3636:6:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 3420,
                                          "name": "id",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3357,
                                          "src": "3644:2:12",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 3418,
                                        "name": "TokenRegistration",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3307,
                                        "src": "3618:17:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,uint256)"
                                        }
                                      },
                                      "id": 3421,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3618:29:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3422,
                                    "nodeType": "EmitStatement",
                                    "src": "3613:34:12"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3446,
                              "name": "_recipient",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3341,
                              "src": "3856:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3447,
                              "name": "id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3357,
                              "src": "3868:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3448,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3343,
                              "src": "3872:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "",
                              "id": 3449,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3880:2:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              },
                              "value": ""
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                "typeString": "literal_string \"\""
                              }
                            ],
                            "id": 3445,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5705,
                            "src": "3850:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 3450,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3850:33:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3451,
                        "nodeType": "ExpressionStatement",
                        "src": "3850:33:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3337,
                    "nodeType": "StructuredDocumentation",
                    "src": "2174:407:12",
                    "text": " @dev Deposit ERC20 tokens or ETH in this contract to receive wrapped ERC20s\n @param _token     The addess of the token to deposit in this contract\n @param _recipient Address that will receive the ERC-1155 tokens\n @param _value     The amount of token to deposit in this contract\n Note: Users must first approve this contract addres on the contract of the ERC20 to be deposited"
                  },
                  "functionSelector": "8340f549",
                  "id": 3453,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "deposit",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3344,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3339,
                        "mutability": "mutable",
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 3453,
                        "src": "2601:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3338,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2601:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3341,
                        "mutability": "mutable",
                        "name": "_recipient",
                        "nodeType": "VariableDeclaration",
                        "scope": 3453,
                        "src": "2617:18:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3340,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2617:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3343,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3453,
                        "src": "2637:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3342,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2637:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2600:52:12"
                  },
                  "returnParameters": {
                    "id": 3345,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2674:0:12"
                  },
                  "scope": 3764,
                  "src": "2584:1304:12",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3477,
                    "nodeType": "Block",
                    "src": "4391:96:12",
                    "statements": [
                      {
                        "assignments": [
                          3464
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3464,
                            "mutability": "mutable",
                            "name": "tokenID",
                            "nodeType": "VariableDeclaration",
                            "scope": 3477,
                            "src": "4397:15:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3463,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4397:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3468,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 3466,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3456,
                              "src": "4426:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 3465,
                            "name": "getTokenID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3680,
                            "src": "4415:10:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view returns (uint256)"
                            }
                          },
                          "id": 3467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4415:18:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4397:36:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 3470,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4449:3:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4449:10:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3472,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3458,
                              "src": "4461:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3473,
                              "name": "tokenID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3464,
                              "src": "4466:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3474,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3460,
                              "src": "4475:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3469,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3547,
                            "src": "4439:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address payable,uint256,uint256)"
                            }
                          },
                          "id": 3475,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4439:43:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3476,
                        "nodeType": "ExpressionStatement",
                        "src": "4439:43:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3454,
                    "nodeType": "StructuredDocumentation",
                    "src": "4014:296:12",
                    "text": " @dev Withdraw wrapped ERC20 tokens in this contract to receive the original ERC20s or ETH\n @param _token The addess of the token to withdrww from this contract\n @param _to The address where the withdrawn tokens will go to\n @param _value The amount of tokens to withdraw"
                  },
                  "functionSelector": "d9caed12",
                  "id": 3478,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3456,
                        "mutability": "mutable",
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 3478,
                        "src": "4331:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3455,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4331:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3458,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3478,
                        "src": "4347:19:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 3457,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4347:15:12",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3460,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3478,
                        "src": "4368:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3459,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4368:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4330:53:12"
                  },
                  "returnParameters": {
                    "id": 3462,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4391:0:12"
                  },
                  "scope": 3764,
                  "src": "4313:174:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3546,
                    "nodeType": "Block",
                    "src": "4991:527:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3491,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3481,
                              "src": "5027:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3492,
                              "name": "_tokenID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3485,
                              "src": "5034:8:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3493,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3487,
                              "src": "5044:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3490,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5830,
                            "src": "5021:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 3494,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5021:30:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3495,
                        "nodeType": "ExpressionStatement",
                        "src": "5021:30:12"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3498,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3496,
                            "name": "_tokenID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3485,
                            "src": "5100:8:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 3497,
                            "name": "ETH_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3287,
                            "src": "5112:6:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5100:18:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 3544,
                          "nodeType": "Block",
                          "src": "5299:213:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    "id": 3526,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 3521,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3483,
                                      "src": "5315:3:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 3524,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5330:1:12",
                                          "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": 3523,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "5322:7:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_$",
                                          "typeString": "type(address)"
                                        },
                                        "typeName": {
                                          "id": 3522,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5322:7:12",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 3525,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5322:10:12",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "5315:17:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4d6574614552433230577261707065722377697468647261773a20494e56414c49445f524543495049454e54",
                                    "id": 3527,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5334:46:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_a3ff64274638dcdb2ba8a07eb1491f949b7ab0bfeb2b25cede5a4a3c65ef7065",
                                      "typeString": "literal_string \"MetaERC20Wrapper#withdraw: INVALID_RECIPIENT\""
                                    },
                                    "value": "MetaERC20Wrapper#withdraw: INVALID_RECIPIENT"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_a3ff64274638dcdb2ba8a07eb1491f949b7ab0bfeb2b25cede5a4a3c65ef7065",
                                      "typeString": "literal_string \"MetaERC20Wrapper#withdraw: INVALID_RECIPIENT\""
                                    }
                                  ],
                                  "id": 3520,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5307:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3528,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5307:74:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3529,
                              "nodeType": "ExpressionStatement",
                              "src": "5307:74:12"
                            },
                            {
                              "assignments": [
                                3531,
                                null
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3531,
                                  "mutability": "mutable",
                                  "name": "success",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3544,
                                  "src": "5390:12:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "typeName": {
                                    "id": 3530,
                                    "name": "bool",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5390:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                null
                              ],
                              "id": 3538,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "hexValue": "",
                                    "id": 3536,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5432:2:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    },
                                    "value": ""
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                      "typeString": "literal_string \"\""
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                        "typeString": "literal_string \"\""
                                      }
                                    ],
                                    "expression": {
                                      "id": 3532,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3483,
                                      "src": "5408:3:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "id": 3533,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "call",
                                    "nodeType": "MemberAccess",
                                    "src": "5408:8:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                                      "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                    }
                                  },
                                  "id": 3535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "value"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 3534,
                                      "name": "_value",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3487,
                                      "src": "5424:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "src": "5408:23:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                                    "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                                  }
                                },
                                "id": 3537,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5408:27:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                                  "typeString": "tuple(bool,bytes memory)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5389:46:12"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3540,
                                    "name": "success",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3531,
                                    "src": "5451:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4d6574614552433230577261707065722377697468647261773a205452414e534645525f4641494c4544",
                                    "id": 3541,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5460:44:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d7528a6cd90ae2fb6c5a0652ba5ca5a48bc570d63bd727556bdfb948863fb826",
                                      "typeString": "literal_string \"MetaERC20Wrapper#withdraw: TRANSFER_FAILED\""
                                    },
                                    "value": "MetaERC20Wrapper#withdraw: TRANSFER_FAILED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_d7528a6cd90ae2fb6c5a0652ba5ca5a48bc570d63bd727556bdfb948863fb826",
                                      "typeString": "literal_string \"MetaERC20Wrapper#withdraw: TRANSFER_FAILED\""
                                    }
                                  ],
                                  "id": 3539,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5443:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3542,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5443:62:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3543,
                              "nodeType": "ExpressionStatement",
                              "src": "5443:62:12"
                            }
                          ]
                        },
                        "id": 3545,
                        "nodeType": "IfStatement",
                        "src": "5096:416:12",
                        "trueBody": {
                          "id": 3519,
                          "nodeType": "Block",
                          "src": "5120:173:12",
                          "statements": [
                            {
                              "assignments": [
                                3500
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3500,
                                  "mutability": "mutable",
                                  "name": "token",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3519,
                                  "src": "5128:13:12",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "typeName": {
                                    "id": 3499,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5128:7:12",
                                    "stateMutability": "nonpayable",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3504,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 3501,
                                  "name": "IDtoAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3301,
                                  "src": "5144:11:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                    "typeString": "mapping(uint256 => address)"
                                  }
                                },
                                "id": 3503,
                                "indexExpression": {
                                  "id": 3502,
                                  "name": "_tokenID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3485,
                                  "src": "5156:8:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5144:21:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5128:37:12"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3509,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3483,
                                    "src": "5196:3:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3510,
                                    "name": "_value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3487,
                                    "src": "5201:6:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 3506,
                                        "name": "token",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3500,
                                        "src": "5180:5:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 3505,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4035,
                                      "src": "5173:6:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4035_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 3507,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5173:13:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4035",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 3508,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "transfer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3977,
                                  "src": "5173:22:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                    "typeString": "function (address,uint256) external returns (bool)"
                                  }
                                },
                                "id": 3511,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5173:35:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 3512,
                              "nodeType": "ExpressionStatement",
                              "src": "5173:35:12"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 3514,
                                      "name": "checkSuccess",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3732,
                                      "src": "5224:12:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$__$returns$_t_bool_$",
                                        "typeString": "function () pure returns (bool)"
                                      }
                                    },
                                    "id": 3515,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5224:14:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "4d6574614552433230577261707065722377697468647261773a205452414e534645525f4641494c4544",
                                    "id": 3516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5240:44:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d7528a6cd90ae2fb6c5a0652ba5ca5a48bc570d63bd727556bdfb948863fb826",
                                      "typeString": "literal_string \"MetaERC20Wrapper#withdraw: TRANSFER_FAILED\""
                                    },
                                    "value": "MetaERC20Wrapper#withdraw: TRANSFER_FAILED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_d7528a6cd90ae2fb6c5a0652ba5ca5a48bc570d63bd727556bdfb948863fb826",
                                      "typeString": "literal_string \"MetaERC20Wrapper#withdraw: TRANSFER_FAILED\""
                                    }
                                  ],
                                  "id": 3513,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5216:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 3517,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5216:69:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3518,
                              "nodeType": "ExpressionStatement",
                              "src": "5216:69:12"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3479,
                    "nodeType": "StructuredDocumentation",
                    "src": "4491:376:12",
                    "text": " @dev Withdraw wrapped ERC20 tokens in this contract to receive the original ERC20s or ETH\n @param _from    Address of users sending the Meta tokens\n @param _to      The address where the withdrawn tokens will go to\n @param _tokenID The token ID of the ERC-20 token to withdraw from this contract\n @param _value   The amount of tokens to withdraw"
                  },
                  "id": 3547,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_withdraw",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3488,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3481,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3547,
                        "src": "4894:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3480,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4894:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3483,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3547,
                        "src": "4913:19:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 3482,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4913:15:12",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3485,
                        "mutability": "mutable",
                        "name": "_tokenID",
                        "nodeType": "VariableDeclaration",
                        "scope": 3547,
                        "src": "4938:16:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3484,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4938:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3487,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3547,
                        "src": "4960:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3486,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4960:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4888:87:12"
                  },
                  "returnParameters": {
                    "id": 3489,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4991:0:12"
                  },
                  "scope": 3764,
                  "src": "4870:648:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3590,
                    "nodeType": "Block",
                    "src": "6026:358:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 3570,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 3564,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "6090:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "6090:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 3568,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "6112:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MetaERC20Wrapper_$3764",
                                      "typeString": "contract MetaERC20Wrapper"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MetaERC20Wrapper_$3764",
                                      "typeString": "contract MetaERC20Wrapper"
                                    }
                                  ],
                                  "id": 3567,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "6104:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3566,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6104:7:12",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3569,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6104:13:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "6090:27:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d657461455243323057726170706572236f6e4552433131353552656365697665643a20494e56414c49445f455243313135355f5245434549564544",
                              "id": 3571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6119:62:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_298f8b1a7d09e54e9ad5dfd1b230710353cd7e0c23bec42e628b01c9bef64671",
                                "typeString": "literal_string \"MetaERC20Wrapper#onERC1155Received: INVALID_ERC1155_RECEIVED\""
                              },
                              "value": "MetaERC20Wrapper#onERC1155Received: INVALID_ERC1155_RECEIVED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_298f8b1a7d09e54e9ad5dfd1b230710353cd7e0c23bec42e628b01c9bef64671",
                                "typeString": "literal_string \"MetaERC20Wrapper#onERC1155Received: INVALID_ERC1155_RECEIVED\""
                              }
                            ],
                            "id": 3563,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "6082:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6082:100:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3573,
                        "nodeType": "ExpressionStatement",
                        "src": "6082:100:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3575,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3554,
                              "src": "6201:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3574,
                            "name": "getIdAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3707,
                            "src": "6188:12:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                              "typeString": "function (uint256) view returns (address)"
                            }
                          },
                          "id": 3576,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6188:17:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3577,
                        "nodeType": "ExpressionStatement",
                        "src": "6188:17:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3581,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "6317:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_MetaERC20Wrapper_$3764",
                                    "typeString": "contract MetaERC20Wrapper"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_MetaERC20Wrapper_$3764",
                                    "typeString": "contract MetaERC20Wrapper"
                                  }
                                ],
                                "id": 3580,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "6309:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3579,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6309:7:12",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 3582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6309:13:12",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3583,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3552,
                              "src": "6324:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3584,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3554,
                              "src": "6331:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3585,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3556,
                              "src": "6336:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3578,
                            "name": "_withdraw",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3547,
                            "src": "6299:9:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address payable,uint256,uint256)"
                            }
                          },
                          "id": 3586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6299:44:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3587,
                        "nodeType": "ExpressionStatement",
                        "src": "6299:44:12"
                      },
                      {
                        "expression": {
                          "id": 3588,
                          "name": "ERC1155_RECEIVED_VALUE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4290,
                          "src": "6357:22:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 3562,
                        "id": 3589,
                        "nodeType": "Return",
                        "src": "6350:29:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3548,
                    "nodeType": "StructuredDocumentation",
                    "src": "5521:371:12",
                    "text": " @notice Withdraw ERC-20 tokens when receiving their ERC-1155 counterpart\n @param _from      The address which previously owned the token\n @param _id        The id of the token being transferred\n @param _value     The amount of tokens being transferred\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 3591,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3559,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3550,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3591,
                        "src": "5922:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3549,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5922:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3552,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3591,
                        "src": "5931:21:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 3551,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5931:15:12",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3554,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3591,
                        "src": "5954:11:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3553,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5954:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3556,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3591,
                        "src": "5967:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3555,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5967:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3558,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3591,
                        "src": "5983:12:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3557,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5983:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5921:75:12"
                  },
                  "returnParameters": {
                    "id": 3562,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3561,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3591,
                        "src": "6016:6:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3560,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "6016:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6015:8:12"
                  },
                  "scope": 3764,
                  "src": "5895:489:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3655,
                    "nodeType": "Block",
                    "src": "6966:476:12",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "id": 3616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 3610,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "7030:3:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "7030:10:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 3614,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "7052:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_MetaERC20Wrapper_$3764",
                                      "typeString": "contract MetaERC20Wrapper"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_MetaERC20Wrapper_$3764",
                                      "typeString": "contract MetaERC20Wrapper"
                                    }
                                  ],
                                  "id": 3613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7044:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3612,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7044:7:12",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3615,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7044:13:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "7030:27:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d657461455243323057726170706572236f6e45524331313535426174636852656365697665643a20494e56414c49445f455243313135355f5245434549564544",
                              "id": 3617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7059:67:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7f7fa389c177bc9787ac2c6dd7e77b288a431fbd01f0543daeaf9e12dd96ceb6",
                                "typeString": "literal_string \"MetaERC20Wrapper#onERC1155BatchReceived: INVALID_ERC1155_RECEIVED\""
                              },
                              "value": "MetaERC20Wrapper#onERC1155BatchReceived: INVALID_ERC1155_RECEIVED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7f7fa389c177bc9787ac2c6dd7e77b288a431fbd01f0543daeaf9e12dd96ceb6",
                                "typeString": "literal_string \"MetaERC20Wrapper#onERC1155BatchReceived: INVALID_ERC1155_RECEIVED\""
                              }
                            ],
                            "id": 3609,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7022:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3618,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7022:105:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3619,
                        "nodeType": "ExpressionStatement",
                        "src": "7022:105:12"
                      },
                      {
                        "body": {
                          "id": 3651,
                          "nodeType": "Block",
                          "src": "7204:192:12",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 3632,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3599,
                                      "src": "7261:4:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 3634,
                                    "indexExpression": {
                                      "id": 3633,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3621,
                                      "src": "7266:1:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7261:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3631,
                                  "name": "getIdAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3707,
                                  "src": "7248:12:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
                                    "typeString": "function (uint256) view returns (address)"
                                  }
                                },
                                "id": 3635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7248:21:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3636,
                              "nodeType": "ExpressionStatement",
                              "src": "7248:21:12"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 3640,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "7355:4:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_MetaERC20Wrapper_$3764",
                                          "typeString": "contract MetaERC20Wrapper"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_MetaERC20Wrapper_$3764",
                                          "typeString": "contract MetaERC20Wrapper"
                                        }
                                      ],
                                      "id": 3639,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "7347:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 3638,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7347:7:12",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 3641,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7347:13:12",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3642,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3596,
                                    "src": "7362:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 3643,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3599,
                                      "src": "7369:4:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 3645,
                                    "indexExpression": {
                                      "id": 3644,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3621,
                                      "src": "7374:1:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7369:7:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 3646,
                                      "name": "_values",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3602,
                                      "src": "7378:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 3648,
                                    "indexExpression": {
                                      "id": 3647,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3621,
                                      "src": "7386:1:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7378:10:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3637,
                                  "name": "_withdraw",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3547,
                                  "src": "7337:9:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_payable_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address payable,uint256,uint256)"
                                  }
                                },
                                "id": 3649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7337:52:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3650,
                              "nodeType": "ExpressionStatement",
                              "src": "7337:52:12"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3627,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3624,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3621,
                            "src": "7182:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 3625,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3599,
                              "src": "7186:4:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3626,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "7186:11:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7182:15:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3652,
                        "initializationExpression": {
                          "assignments": [
                            3621
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3621,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 3652,
                              "src": "7167:9:12",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3620,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7167:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3623,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 3622,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7179:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7167:13:12"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 3629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "7199:3:12",
                            "subExpression": {
                              "id": 3628,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3621,
                              "src": "7199:1:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3630,
                          "nodeType": "ExpressionStatement",
                          "src": "7199:3:12"
                        },
                        "nodeType": "ForStatement",
                        "src": "7161:235:12"
                      },
                      {
                        "expression": {
                          "id": 3653,
                          "name": "ERC1155_BATCH_RECEIVED_VALUE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4293,
                          "src": "7409:28:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "functionReturnParameters": 3608,
                        "id": 3654,
                        "nodeType": "Return",
                        "src": "7402:35:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3592,
                    "nodeType": "StructuredDocumentation",
                    "src": "6388:419:12",
                    "text": " @notice Withdraw ERC-20 tokens when receiving their ERC-1155 counterpart\n @param _from      The address which previously owned the token\n @param _ids       An array containing ids of each token being transferred\n @param _values    An array containing amounts of each token being transferred\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`"
                  },
                  "functionSelector": "bc197c81",
                  "id": 3656,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3605,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3594,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3656,
                        "src": "6842:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3593,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6842:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3596,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3656,
                        "src": "6851:21:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 3595,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6851:15:12",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3599,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3656,
                        "src": "6874:21:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3597,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6874:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3598,
                          "nodeType": "ArrayTypeName",
                          "src": "6874:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3602,
                        "mutability": "mutable",
                        "name": "_values",
                        "nodeType": "VariableDeclaration",
                        "scope": 3656,
                        "src": "6897:24:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3600,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "6897:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3601,
                          "nodeType": "ArrayTypeName",
                          "src": "6897:9:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3604,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3656,
                        "src": "6923:12:12",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3603,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "6923:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6841:95:12"
                  },
                  "returnParameters": {
                    "id": 3608,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3607,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3656,
                        "src": "6956:6:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3606,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "6956:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6955:8:12"
                  },
                  "scope": 3764,
                  "src": "6810:632:12",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3679,
                    "nodeType": "Block",
                    "src": "7737:138:12",
                    "statements": [
                      {
                        "expression": {
                          "id": 3668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3664,
                            "name": "tokenID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3662,
                            "src": "7743:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 3665,
                              "name": "addressToID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3297,
                              "src": "7753:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 3667,
                            "indexExpression": {
                              "id": 3666,
                              "name": "_token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3659,
                              "src": "7765:6:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7753:19:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7743:29:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3669,
                        "nodeType": "ExpressionStatement",
                        "src": "7743:29:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3673,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3671,
                                "name": "tokenID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3662,
                                "src": "7786:7:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 3672,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7797:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7786:12:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d65746145524332305772617070657223676574546f6b656e49443a20554e524547495354455245445f544f4b454e",
                              "id": 3674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7800:49:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e3ddbb34173b4d53b1858796a31b67c7ca88e7d9b7db4a44c73d3f1be7545c29",
                                "typeString": "literal_string \"MetaERC20Wrapper#getTokenID: UNREGISTERED_TOKEN\""
                              },
                              "value": "MetaERC20Wrapper#getTokenID: UNREGISTERED_TOKEN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e3ddbb34173b4d53b1858796a31b67c7ca88e7d9b7db4a44c73d3f1be7545c29",
                                "typeString": "literal_string \"MetaERC20Wrapper#getTokenID: UNREGISTERED_TOKEN\""
                              }
                            ],
                            "id": 3670,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7778:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7778:72:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3676,
                        "nodeType": "ExpressionStatement",
                        "src": "7778:72:12"
                      },
                      {
                        "expression": {
                          "id": 3677,
                          "name": "tokenID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3662,
                          "src": "7863:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3663,
                        "id": 3678,
                        "nodeType": "Return",
                        "src": "7856:14:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3657,
                    "nodeType": "StructuredDocumentation",
                    "src": "7446:214:12",
                    "text": " @notice Return the Meta-ERC20 token ID for the given ERC-20 token address\n @param _token ERC-20 token address to get the corresponding Meta-ERC20 token ID\n @return tokenID Meta-ERC20 token ID"
                  },
                  "functionSelector": "63f8071c",
                  "id": 3680,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTokenID",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3660,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3659,
                        "mutability": "mutable",
                        "name": "_token",
                        "nodeType": "VariableDeclaration",
                        "scope": 3680,
                        "src": "7683:14:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3658,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7683:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7682:16:12"
                  },
                  "returnParameters": {
                    "id": 3663,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3662,
                        "mutability": "mutable",
                        "name": "tokenID",
                        "nodeType": "VariableDeclaration",
                        "scope": 3680,
                        "src": "7720:15:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3661,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7720:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7719:17:12"
                  },
                  "scope": 3764,
                  "src": "7663:212:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3706,
                    "nodeType": "Block",
                    "src": "8163:142:12",
                    "statements": [
                      {
                        "expression": {
                          "id": 3692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3688,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3686,
                            "src": "8169:5:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 3689,
                              "name": "IDtoAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3301,
                              "src": "8177:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                                "typeString": "mapping(uint256 => address)"
                              }
                            },
                            "id": 3691,
                            "indexExpression": {
                              "id": 3690,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3683,
                              "src": "8189:3:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8177:16:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8169:24:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3693,
                        "nodeType": "ExpressionStatement",
                        "src": "8169:24:12"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 3700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3695,
                                "name": "token",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3686,
                                "src": "8207:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "307830",
                                    "id": 3698,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8224:3:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0x0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 3697,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "8216:7:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3696,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8216:7:12",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8216:12:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "8207:21:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4d657461455243323057726170706572236765744964416464726573733a20554e524547495354455245445f544f4b454e",
                              "id": 3701,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8230:51:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a400c79cc9e4d63fe5f7c90f141f667cd9b84b276de2c465e0102adb91057b61",
                                "typeString": "literal_string \"MetaERC20Wrapper#getIdAddress: UNREGISTERED_TOKEN\""
                              },
                              "value": "MetaERC20Wrapper#getIdAddress: UNREGISTERED_TOKEN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a400c79cc9e4d63fe5f7c90f141f667cd9b84b276de2c465e0102adb91057b61",
                                "typeString": "literal_string \"MetaERC20Wrapper#getIdAddress: UNREGISTERED_TOKEN\""
                              }
                            ],
                            "id": 3694,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "8199:7:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 3702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8199:83:12",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3703,
                        "nodeType": "ExpressionStatement",
                        "src": "8199:83:12"
                      },
                      {
                        "expression": {
                          "id": 3704,
                          "name": "token",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3686,
                          "src": "8295:5:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "functionReturnParameters": 3687,
                        "id": 3705,
                        "nodeType": "Return",
                        "src": "8288:12:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3681,
                    "nodeType": "StructuredDocumentation",
                    "src": "7879:210:12",
                    "text": " @notice Return the ERC-20 token address for the given Meta-ERC20 token ID\n @param _id Meta-ERC20 token ID to get the corresponding ERC-20 token address\n @return token ERC-20 token address"
                  },
                  "functionSelector": "7358e9a5",
                  "id": 3707,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getIdAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3684,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3683,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3707,
                        "src": "8114:11:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3682,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8114:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8113:13:12"
                  },
                  "returnParameters": {
                    "id": 3687,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3686,
                        "mutability": "mutable",
                        "name": "token",
                        "nodeType": "VariableDeclaration",
                        "scope": 3707,
                        "src": "8148:13:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3685,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8148:7:12",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8147:15:12"
                  },
                  "scope": 3764,
                  "src": "8092:213:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3715,
                    "nodeType": "Block",
                    "src": "8434:25:12",
                    "statements": [
                      {
                        "expression": {
                          "id": 3713,
                          "name": "nTokens",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3284,
                          "src": "8447:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 3712,
                        "id": 3714,
                        "nodeType": "Return",
                        "src": "8440:14:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3708,
                    "nodeType": "StructuredDocumentation",
                    "src": "8309:68:12",
                    "text": " @notice Returns number of tokens currently registered"
                  },
                  "functionSelector": "9040a949",
                  "id": 3716,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNTokens",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3709,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8399:2:12"
                  },
                  "returnParameters": {
                    "id": 3712,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3711,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3716,
                        "src": "8425:7:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3710,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8425:7:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8424:9:12"
                  },
                  "scope": 3764,
                  "src": "8380:79:12",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 3731,
                    "nodeType": "Block",
                    "src": "8967:683:12",
                    "statements": [
                      {
                        "assignments": [
                          3723
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3723,
                            "mutability": "mutable",
                            "name": "returnValue",
                            "nodeType": "VariableDeclaration",
                            "scope": 3731,
                            "src": "8973:19:12",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3722,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8973:7:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3725,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 3724,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "8995:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8973:23:12"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "9075:541:12",
                          "statements": [
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "9234:38:12",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "9246:16:12",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9261:1:12",
                                          "type": "",
                                          "value": "1"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "returnValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "9246:11:12"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "9225:47:12",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9230:3:12",
                                    "type": "",
                                    "value": "0x0"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "9340:182:12",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9413:3:12",
                                              "type": "",
                                              "value": "0x0"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9418:3:12",
                                              "type": "",
                                              "value": "0x0"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9423:4:12",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "returndatacopy",
                                            "nodeType": "YulIdentifier",
                                            "src": "9398:14:12"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9398:30:12"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "9398:30:12"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "9487:25:12",
                                        "value": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "9508:3:12",
                                              "type": "",
                                              "value": "0x0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "9502:5:12"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "9502:10:12"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "returnValue",
                                            "nodeType": "YulIdentifier",
                                            "src": "9487:11:12"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "9330:192:12",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9335:4:12",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "9600:3:12",
                                    "statements": []
                                  },
                                  "nodeType": "YulCase",
                                  "src": "9592:11:12",
                                  "value": "default"
                                }
                              ],
                              "expression": {
                                "arguments": [],
                                "functionName": {
                                  "name": "returndatasize",
                                  "nodeType": "YulIdentifier",
                                  "src": "9154:14:12"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9154:16:12"
                              },
                              "nodeType": "YulSwitch",
                              "src": "9147:456:12"
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 3723,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9246:11:12",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3723,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9487:11:12",
                            "valueSize": 1
                          }
                        ],
                        "id": 3726,
                        "nodeType": "InlineAssembly",
                        "src": "9066:550:12"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3727,
                            "name": "returnValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3723,
                            "src": "9629:11:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 3728,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9644:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "9629:16:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3721,
                        "id": 3730,
                        "nodeType": "Return",
                        "src": "9622:23:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3717,
                    "nodeType": "StructuredDocumentation",
                    "src": "8586:316:12",
                    "text": " Checks the return value of the previous function up to 32 bytes. Returns true if the previous\n function returned 0 bytes or 32 bytes that are not all-zero.\n Code taken from: https://github.com/dydxprotocol/solo/blob/10baf8e4c3fb9db4d0919043d3e6fdd6ba834046/contracts/protocol/lib/Token.sol"
                  },
                  "id": 3732,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "checkSuccess",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3718,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8926:2:12"
                  },
                  "returnParameters": {
                    "id": 3721,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3720,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3732,
                        "src": "8959:4:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3719,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8959:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8958:6:12"
                  },
                  "scope": 3764,
                  "src": "8905:745:12",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "private"
                },
                {
                  "baseFunctions": [
                    4811
                  ],
                  "body": {
                    "id": 3762,
                    "nodeType": "Block",
                    "src": "10214:183:12",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 3753,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 3746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3741,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3735,
                                "src": "10228:11:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3743,
                                      "name": "IERC165",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3965,
                                      "src": "10248:7:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC165_$3965_$",
                                        "typeString": "type(contract IERC165)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC165_$3965_$",
                                        "typeString": "type(contract IERC165)"
                                      }
                                    ],
                                    "id": 3742,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "10243:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 3744,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10243:13:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$3965",
                                    "typeString": "type(contract IERC165)"
                                  }
                                },
                                "id": 3745,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "10243:25:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "10228:40:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              "id": 3752,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 3747,
                                "name": "interfaceID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3735,
                                "src": "10278:11:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 3749,
                                      "name": "IERC1155",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3875,
                                      "src": "10298:8:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                        "typeString": "type(contract IERC1155)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                        "typeString": "type(contract IERC1155)"
                                      }
                                    ],
                                    "id": 3748,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "10293:4:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 3750,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10293:14:12",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$3875",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                },
                                "id": 3751,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "interfaceId",
                                "nodeType": "MemberAccess",
                                "src": "10293:26:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "src": "10278:41:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "10228:91:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "id": 3759,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 3754,
                              "name": "interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3735,
                              "src": "10330:11:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3756,
                                    "name": "IERC1155TokenReceiver",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3930,
                                    "src": "10350:21:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3930_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3930_$",
                                      "typeString": "type(contract IERC1155TokenReceiver)"
                                    }
                                  ],
                                  "id": 3755,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "10345:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3757,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10345:27:12",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155TokenReceiver_$3930",
                                  "typeString": "type(contract IERC1155TokenReceiver)"
                                }
                              },
                              "id": 3758,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "interfaceId",
                              "nodeType": "MemberAccess",
                              "src": "10345:39:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "src": "10330:54:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "10228:156:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 3740,
                        "id": 3761,
                        "nodeType": "Return",
                        "src": "10220:164:12"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3733,
                    "nodeType": "StructuredDocumentation",
                    "src": "9654:474:12",
                    "text": " @notice Indicates whether a contract implements the `ERC1155TokenReceiver` functions and so can accept ERC1155 token types.\n @param  interfaceID The ERC-165 interface ID that is queried for support.s\n @dev This function MUST return true if it implements the ERC1155TokenReceiver interface and ERC-165 interface.\n      This function MUST NOT consume more than 5,000 gas.\n @return Wheter ERC-165 or ERC1155TokenReceiver interfaces are supported."
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 3763,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 3737,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10185:8:12"
                  },
                  "parameters": {
                    "id": 3736,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3735,
                        "mutability": "mutable",
                        "name": "interfaceID",
                        "nodeType": "VariableDeclaration",
                        "scope": 3763,
                        "src": "10158:18:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3734,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "10158:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10157:20:12"
                  },
                  "returnParameters": {
                    "id": 3740,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3739,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3763,
                        "src": "10208:4:12",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3738,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10208:4:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10207:6:12"
                  },
                  "scope": 3764,
                  "src": "10131:266:12",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 3765,
              "src": "746:9654:12"
            }
          ],
          "src": "0:10400:12"
        },
        "id": 12
      },
      "multi-token-standard/contracts/interfaces/IERC1155.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155.sol",
          "exportedSymbols": {
            "IERC1155": [
              3875
            ]
          },
          "id": 3876,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3766,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:13"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 3875,
              "linearizedBaseContracts": [
                3875
              ],
              "name": "IERC1155",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3767,
                    "nodeType": "StructuredDocumentation",
                    "src": "224:743:13",
                    "text": " @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning\n   Operator MUST be msg.sender\n   When minting/creating tokens, the `_from` field MUST be set to `0x0`\n   When burning/destroying tokens, the `_to` field MUST be set to `0x0`\n   The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the \"circulating supply\" for a given token ID\n   To broadcast the existence of a token ID with no initial balance, the contract SHOULD emit the TransferSingle event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0"
                  },
                  "id": 3779,
                  "name": "TransferSingle",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3778,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3769,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3779,
                        "src": "991:25:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3768,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "991:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3771,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3779,
                        "src": "1018:21:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3770,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1018:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3773,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3779,
                        "src": "1041:19:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3772,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1041:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3775,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3779,
                        "src": "1062:11:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3774,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1062:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3777,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3779,
                        "src": "1075:15:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3776,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1075:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "990:101:13"
                  },
                  "src": "970:122:13"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3780,
                    "nodeType": "StructuredDocumentation",
                    "src": "1096:742:13",
                    "text": " @dev Either TransferSingle or TransferBatch MUST emit when tokens are transferred, including zero amount transfers as well as minting or burning\n   Operator MUST be msg.sender\n   When minting/creating tokens, the `_from` field MUST be set to `0x0`\n   When burning/destroying tokens, the `_to` field MUST be set to `0x0`\n   The total amount transferred from address 0x0 minus the total amount transferred to 0x0 may be used by clients and exchanges to be added to the \"circulating supply\" for a given token ID\n   To broadcast the existence of multiple token IDs with no initial balance, this SHOULD emit the TransferBatch event from `0x0` to `0x0`, with the token creator as `_operator`, and a `_amount` of 0"
                  },
                  "id": 3794,
                  "name": "TransferBatch",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3793,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3782,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3794,
                        "src": "1861:25:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3781,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1861:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3784,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3794,
                        "src": "1888:21:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3783,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1888:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3786,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3794,
                        "src": "1911:19:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3785,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1911:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3789,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3794,
                        "src": "1932:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3787,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1932:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3788,
                          "nodeType": "ArrayTypeName",
                          "src": "1932:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3792,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 3794,
                        "src": "1948:18:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3790,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1948:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3791,
                          "nodeType": "ArrayTypeName",
                          "src": "1948:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1860:107:13"
                  },
                  "src": "1841:127:13"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 3795,
                    "nodeType": "StructuredDocumentation",
                    "src": "1972:57:13",
                    "text": " @dev MUST emit when an approval is updated"
                  },
                  "id": 3803,
                  "name": "ApprovalForAll",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3802,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3797,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 3803,
                        "src": "2053:22:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3796,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2053:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3799,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3803,
                        "src": "2077:25:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3798,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2077:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3801,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 3803,
                        "src": "2104:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3800,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2104:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2052:67:13"
                  },
                  "src": "2032:88:13"
                },
                {
                  "documentation": {
                    "id": 3804,
                    "nodeType": "StructuredDocumentation",
                    "src": "2261:930:13",
                    "text": " @notice Transfers amount of an _id from the _from address to the _to address specified\n @dev MUST emit TransferSingle event on success\n Caller must be approved to manage the _from account's tokens (see isApprovedForAll)\n MUST throw if `_to` is the zero address\n MUST throw if balance of sender for token `_id` is lower than the `_amount` sent\n MUST throw on any other error\n When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155Received` on `_to` and revert if the return amount is not `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n @param _from    Source address\n @param _to      Target address\n @param _id      ID of the token type\n @param _amount  Transfered amount\n @param _data    Additional data with no specified format, sent in call to `_to`"
                  },
                  "functionSelector": "f242432a",
                  "id": 3817,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3815,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3806,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3817,
                        "src": "3220:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3805,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3220:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3808,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3817,
                        "src": "3235:11:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3807,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3235:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3810,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3817,
                        "src": "3248:11:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3809,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3248:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3812,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3817,
                        "src": "3261:15:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3811,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3261:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3814,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3817,
                        "src": "3278:20:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3813,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3278:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3219:80:13"
                  },
                  "returnParameters": {
                    "id": 3816,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3308:0:13"
                  },
                  "scope": 3875,
                  "src": "3194:115:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3818,
                    "nodeType": "StructuredDocumentation",
                    "src": "3313:1186:13",
                    "text": " @notice Send multiple types of Tokens from the _from address to the _to address (with safety call)\n @dev MUST emit TransferBatch event on success\n Caller must be approved to manage the _from account's tokens (see isApprovedForAll)\n MUST throw if `_to` is the zero address\n MUST throw if length of `_ids` is not the same as length of `_amounts`\n MUST throw if any of the balance of sender for token `_ids` is lower than the respective `_amounts` sent\n MUST throw on any other error\n When transfer is complete, this function MUST check if `_to` is a smart contract (code size > 0). If so, it MUST call `onERC1155BatchReceived` on `_to` and revert if the return amount is not `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n Transfers and events MUST occur in the array order they were submitted (_ids[0] before _ids[1], etc)\n @param _from     Source addresses\n @param _to       Target addresses\n @param _ids      IDs of each token type\n @param _amounts  Transfer amounts per token type\n @param _data     Additional data with no specified format, sent in call to `_to`"
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 3833,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3831,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3820,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3833,
                        "src": "4533:13:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3819,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4533:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3822,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3833,
                        "src": "4548:11:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3821,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4548:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3825,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3833,
                        "src": "4561:23:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3823,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4561:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3824,
                          "nodeType": "ArrayTypeName",
                          "src": "4561:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3828,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 3833,
                        "src": "4586:27:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3826,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4586:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3827,
                          "nodeType": "ArrayTypeName",
                          "src": "4586:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3830,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3833,
                        "src": "4615:20:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3829,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4615:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4532:104:13"
                  },
                  "returnParameters": {
                    "id": 3832,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4645:0:13"
                  },
                  "scope": 3875,
                  "src": "4502:144:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3834,
                    "nodeType": "StructuredDocumentation",
                    "src": "4650:218:13",
                    "text": " @notice Get the balance of an account's Tokens\n @param _owner  The address of the token holder\n @param _id     ID of the Token\n @return        The _owner's balance of the Token type requested"
                  },
                  "functionSelector": "00fdd58e",
                  "id": 3843,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3839,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3836,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 3843,
                        "src": "4890:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3835,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4890:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3838,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3843,
                        "src": "4906:11:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3837,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4906:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4889:29:13"
                  },
                  "returnParameters": {
                    "id": 3842,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3841,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3843,
                        "src": "4942:7:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3840,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4942:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4941:9:13"
                  },
                  "scope": 3875,
                  "src": "4871:80:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3844,
                    "nodeType": "StructuredDocumentation",
                    "src": "4955:273:13",
                    "text": " @notice Get the balance of multiple account/token pairs\n @param _owners The addresses of the token holders\n @param _ids    ID of the Tokens\n @return        The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair)"
                  },
                  "functionSelector": "4e1273f4",
                  "id": 3856,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3851,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3847,
                        "mutability": "mutable",
                        "name": "_owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 3856,
                        "src": "5255:26:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3845,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5255:7:13",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 3846,
                          "nodeType": "ArrayTypeName",
                          "src": "5255:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3850,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3856,
                        "src": "5283:23:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3848,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5283:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3849,
                          "nodeType": "ArrayTypeName",
                          "src": "5283:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5254:53:13"
                  },
                  "returnParameters": {
                    "id": 3855,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3854,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3856,
                        "src": "5331:16:13",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3852,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5331:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3853,
                          "nodeType": "ArrayTypeName",
                          "src": "5331:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5330:18:13"
                  },
                  "scope": 3875,
                  "src": "5231:118:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3857,
                    "nodeType": "StructuredDocumentation",
                    "src": "5353:324:13",
                    "text": " @notice Enable or disable approval for a third party (\"operator\") to manage all of caller's tokens\n @dev MUST emit the ApprovalForAll event on success\n @param _operator  Address to add to the set of authorized operators\n @param _approved  True if the operator is approved, false to revoke approval"
                  },
                  "functionSelector": "a22cb465",
                  "id": 3864,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3862,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3859,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3864,
                        "src": "5707:17:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3858,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5707:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3861,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 3864,
                        "src": "5726:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3860,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5726:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5706:35:13"
                  },
                  "returnParameters": {
                    "id": 3863,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5750:0:13"
                  },
                  "scope": 3875,
                  "src": "5680:71:13",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3865,
                    "nodeType": "StructuredDocumentation",
                    "src": "5755:255:13",
                    "text": " @notice Queries the approval status of an operator for a given owner\n @param _owner     The owner of the Tokens\n @param _operator  Address of authorized operator\n @return isOperator True if the operator is approved, false if not"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 3874,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3870,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3867,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 3874,
                        "src": "6039:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3866,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6039:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3869,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3874,
                        "src": "6055:17:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3868,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6055:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6038:35:13"
                  },
                  "returnParameters": {
                    "id": 3873,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3872,
                        "mutability": "mutable",
                        "name": "isOperator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3874,
                        "src": "6097:15:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3871,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6097:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6096:17:13"
                  },
                  "scope": 3875,
                  "src": "6013:101:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3876,
              "src": "64:6052:13"
            }
          ],
          "src": "39:6078:13"
        },
        "id": 13
      },
      "multi-token-standard/contracts/interfaces/IERC1155Metadata.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155Metadata.sol",
          "exportedSymbols": {
            "IERC1155Metadata": [
              3892
            ]
          },
          "id": 3893,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3877,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:14"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 3892,
              "linearizedBaseContracts": [
                3892
              ],
              "name": "IERC1155Metadata",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 3883,
                  "name": "URI",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 3882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3879,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "_uri",
                        "nodeType": "VariableDeclaration",
                        "scope": 3883,
                        "src": "106:11:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3878,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "106:6:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3881,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3883,
                        "src": "119:19:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3880,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "119:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "105:34:14"
                  },
                  "src": "96:44:14"
                },
                {
                  "documentation": {
                    "id": 3884,
                    "nodeType": "StructuredDocumentation",
                    "src": "280:307:14",
                    "text": " @notice A distinct Uniform Resource Identifier (URI) for a given token.\n @dev URIs are defined in RFC 3986.\n      URIs are assumed to be deterministically generated based on token ID\n      Token IDs are assumed to be represented in their hex format in URIs\n @return URI string"
                  },
                  "functionSelector": "0e89341c",
                  "id": 3891,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3887,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3886,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3891,
                        "src": "603:11:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3885,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "603:7:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "602:13:14"
                  },
                  "returnParameters": {
                    "id": 3890,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3889,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3891,
                        "src": "639:13:14",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3888,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "639:6:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "638:15:14"
                  },
                  "scope": 3892,
                  "src": "590:64:14",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3893,
              "src": "64:592:14"
            }
          ],
          "src": "39:618:14"
        },
        "id": 14
      },
      "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol",
          "exportedSymbols": {
            "IERC1155TokenReceiver": [
              3930
            ]
          },
          "id": 3931,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3894,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:15"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3895,
                "nodeType": "StructuredDocumentation",
                "src": "63:64:15",
                "text": " @dev ERC-1155 interface for accepting safe transfers."
              },
              "fullyImplemented": false,
              "id": 3930,
              "linearizedBaseContracts": [
                3930
              ],
              "name": "IERC1155TokenReceiver",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3896,
                    "nodeType": "StructuredDocumentation",
                    "src": "165:908:15",
                    "text": " @notice Handle the receipt of a single ERC1155 token type\n @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeTransferFrom` after the balance has been updated\n This function MAY throw to revert and reject the transfer\n Return of other amount than the magic value MUST result in the transaction being reverted\n Note: The token contract address is always the message sender\n @param _operator  The address which called the `safeTransferFrom` function\n @param _from      The address which previously owned the token\n @param _id        The id of the token being transferred\n @param _amount    The amount of tokens being transferred\n @param _data      Additional data with no specified format\n @return           `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`"
                  },
                  "functionSelector": "f23a6e61",
                  "id": 3911,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3907,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3898,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3911,
                        "src": "1103:17:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3897,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1103:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3900,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3911,
                        "src": "1122:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3899,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1122:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3902,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 3911,
                        "src": "1137:11:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3901,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1137:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3904,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3911,
                        "src": "1150:15:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3903,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1150:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3906,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3911,
                        "src": "1167:20:15",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3905,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1167:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1102:86:15"
                  },
                  "returnParameters": {
                    "id": 3910,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3909,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3911,
                        "src": "1206:6:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3908,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1206:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1205:8:15"
                  },
                  "scope": 3930,
                  "src": "1076:138:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3912,
                    "nodeType": "StructuredDocumentation",
                    "src": "1218:969:15",
                    "text": " @notice Handle the receipt of multiple ERC1155 token types\n @dev An ERC1155-compliant smart contract MUST call this function on the token recipient contract, at the end of a `safeBatchTransferFrom` after the balances have been updated\n This function MAY throw to revert and reject the transfer\n Return of other amount than the magic value WILL result in the transaction being reverted\n Note: The token contract address is always the message sender\n @param _operator  The address which called the `safeBatchTransferFrom` function\n @param _from      The address which previously owned the token\n @param _ids       An array containing ids of each token being transferred\n @param _amounts   An array containing amounts of each token being transferred\n @param _data      Additional data with no specified format\n @return           `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`"
                  },
                  "functionSelector": "bc197c81",
                  "id": 3929,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "onERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3925,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3914,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 3929,
                        "src": "2222:17:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3913,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2222:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3916,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3929,
                        "src": "2241:13:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3915,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2241:7:15",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3919,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 3929,
                        "src": "2256:23:15",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3917,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2256:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3918,
                          "nodeType": "ArrayTypeName",
                          "src": "2256:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3922,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 3929,
                        "src": "2281:27:15",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3920,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2281:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 3921,
                          "nodeType": "ArrayTypeName",
                          "src": "2281:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3924,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3929,
                        "src": "2310:20:15",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3923,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2310:5:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2221:110:15"
                  },
                  "returnParameters": {
                    "id": 3928,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3927,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3929,
                        "src": "2349:6:15",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3926,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2349:6:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2348:8:15"
                  },
                  "scope": 3930,
                  "src": "2190:167:15",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3931,
              "src": "128:2231:15"
            }
          ],
          "src": "39:2321:15"
        },
        "id": 15
      },
      "multi-token-standard/contracts/interfaces/IERC1271Wallet.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/interfaces/IERC1271Wallet.sol",
          "exportedSymbols": {
            "IERC1271Wallet": [
              3953
            ]
          },
          "id": 3954,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3932,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:16"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 3953,
              "linearizedBaseContracts": [
                3953
              ],
              "name": "IERC1271Wallet",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3933,
                    "nodeType": "StructuredDocumentation",
                    "src": "95:638:16",
                    "text": " @notice Verifies whether the provided signature is valid with respect to the provided data\n @dev MUST return the correct magic value if the signature provided is valid for the provided data\n   > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n   > This function MAY modify Ethereum's state\n @param _data       Arbitrary length data signed on the behalf of address(this)\n @param _signature  Signature byte array associated with _data\n @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise"
                  },
                  "functionSelector": "20c13b0b",
                  "id": 3942,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidSignature",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3938,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3935,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 3942,
                        "src": "767:20:16",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3934,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "767:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3937,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 3942,
                        "src": "793:25:16",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3936,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "793:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "761:58:16"
                  },
                  "returnParameters": {
                    "id": 3941,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3940,
                        "mutability": "mutable",
                        "name": "magicValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 3942,
                        "src": "855:17:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3939,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "855:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "854:19:16"
                  },
                  "scope": 3953,
                  "src": "736:138:16",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 3943,
                    "nodeType": "StructuredDocumentation",
                    "src": "878:604:16",
                    "text": " @notice Verifies whether the provided signature is valid with respect to the provided hash\n @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n   > The bytes4 magic value to return when signature is valid is 0x20c13b0b : bytes4(keccak256(\"isValidSignature(bytes,bytes)\")\n   > This function MAY modify Ethereum's state\n @param _hash       keccak256 hash that was signed\n @param _signature  Signature byte array associated with _data\n @return magicValue Magic value 0x20c13b0b if the signature is valid and 0x0 otherwise"
                  },
                  "functionSelector": "1626ba7e",
                  "id": 3952,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidSignature",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3948,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3945,
                        "mutability": "mutable",
                        "name": "_hash",
                        "nodeType": "VariableDeclaration",
                        "scope": 3952,
                        "src": "1516:13:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3944,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1516:7:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3947,
                        "mutability": "mutable",
                        "name": "_signature",
                        "nodeType": "VariableDeclaration",
                        "scope": 3952,
                        "src": "1535:25:16",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3946,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1535:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1510:51:16"
                  },
                  "returnParameters": {
                    "id": 3951,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3950,
                        "mutability": "mutable",
                        "name": "magicValue",
                        "nodeType": "VariableDeclaration",
                        "scope": 3952,
                        "src": "1597:17:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3949,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1597:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1596:19:16"
                  },
                  "scope": 3953,
                  "src": "1485:131:16",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3954,
              "src": "64:1554:16"
            }
          ],
          "src": "39:1580:16"
        },
        "id": 16
      },
      "multi-token-standard/contracts/interfaces/IERC165.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/interfaces/IERC165.sol",
          "exportedSymbols": {
            "IERC165": [
              3965
            ]
          },
          "id": 3966,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3955,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:17"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3956,
                "nodeType": "StructuredDocumentation",
                "src": "64:93:17",
                "text": " @title ERC165\n @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md"
              },
              "fullyImplemented": false,
              "id": 3965,
              "linearizedBaseContracts": [
                3965
              ],
              "name": "IERC165",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 3957,
                    "nodeType": "StructuredDocumentation",
                    "src": "183:256:17",
                    "text": " @notice Query if a contract implements an interface\n @dev Interface identification is specified in ERC-165. This function\n uses less than 30,000 gas\n @param _interfaceId The interface identifier, as specified in ERC-165"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 3964,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3960,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3959,
                        "mutability": "mutable",
                        "name": "_interfaceId",
                        "nodeType": "VariableDeclaration",
                        "scope": 3964,
                        "src": "471:19:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 3958,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "471:6:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "470:21:17"
                  },
                  "returnParameters": {
                    "id": 3963,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3962,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3964,
                        "src": "527:4:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3961,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "527:4:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "526:6:17"
                  },
                  "scope": 3965,
                  "src": "444:89:17",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 3966,
              "src": "158:377:17"
            }
          ],
          "src": "39:497:17"
        },
        "id": 17
      },
      "multi-token-standard/contracts/interfaces/IERC20.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/interfaces/IERC20.sol",
          "exportedSymbols": {
            "IERC20": [
              4035
            ]
          },
          "id": 4036,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3967,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:18"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 3968,
                "nodeType": "StructuredDocumentation",
                "src": "63:83:18",
                "text": " @title ERC20 interface\n @dev see https://eips.ethereum.org/EIPS/eip-20"
              },
              "fullyImplemented": false,
              "id": 4035,
              "linearizedBaseContracts": [
                4035
              ],
              "name": "IERC20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "a9059cbb",
                  "id": 3977,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transfer",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3973,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3970,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3977,
                        "src": "186:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3969,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "186:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3972,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3977,
                        "src": "198:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3971,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "198:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "185:27:18"
                  },
                  "returnParameters": {
                    "id": 3976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3975,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3977,
                        "src": "231:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3974,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "231:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "230:6:18"
                  },
                  "scope": 4035,
                  "src": "168:69:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "095ea7b3",
                  "id": 3986,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "approve",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3982,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3979,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 3986,
                        "src": "257:15:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3978,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "257:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3981,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3986,
                        "src": "274:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3980,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "274:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "256:32:18"
                  },
                  "returnParameters": {
                    "id": 3985,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3984,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3986,
                        "src": "307:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3983,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "307:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "306:6:18"
                  },
                  "scope": 4035,
                  "src": "240:73:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "23b872dd",
                  "id": 3997,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3993,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3988,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 3997,
                        "src": "338:12:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3987,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "338:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3990,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 3997,
                        "src": "352:10:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3989,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "352:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3992,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 3997,
                        "src": "364:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3991,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "364:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "337:41:18"
                  },
                  "returnParameters": {
                    "id": 3996,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3995,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 3997,
                        "src": "397:4:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3994,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "397:4:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "396:6:18"
                  },
                  "scope": 4035,
                  "src": "316:87:18",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "18160ddd",
                  "id": 4002,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "totalSupply",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3998,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "426:2:18"
                  },
                  "returnParameters": {
                    "id": 4001,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4000,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4002,
                        "src": "452:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3999,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "452:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "451:9:18"
                  },
                  "scope": 4035,
                  "src": "406:55:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "70a08231",
                  "id": 4009,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4005,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4004,
                        "mutability": "mutable",
                        "name": "who",
                        "nodeType": "VariableDeclaration",
                        "scope": 4009,
                        "src": "483:11:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4003,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "483:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "482:13:18"
                  },
                  "returnParameters": {
                    "id": 4008,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4007,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4009,
                        "src": "519:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4006,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "519:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "518:9:18"
                  },
                  "scope": 4035,
                  "src": "464:64:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "dd62ed3e",
                  "id": 4018,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "allowance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4014,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4011,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 4018,
                        "src": "550:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4010,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "550:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4013,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 4018,
                        "src": "565:15:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4012,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "565:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "549:32:18"
                  },
                  "returnParameters": {
                    "id": 4017,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4016,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4018,
                        "src": "605:7:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4015,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "605:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "604:9:18"
                  },
                  "scope": 4035,
                  "src": "531:83:18",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "anonymous": false,
                  "id": 4026,
                  "name": "Transfer",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4020,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4026,
                        "src": "632:20:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4019,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "632:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4022,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4026,
                        "src": "654:18:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4021,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "654:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4024,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4026,
                        "src": "674:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4023,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "674:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "631:57:18"
                  },
                  "src": "617:72:18"
                },
                {
                  "anonymous": false,
                  "id": 4034,
                  "name": "Approval",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4033,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4028,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 4034,
                        "src": "707:21:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4027,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "707:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4030,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "spender",
                        "nodeType": "VariableDeclaration",
                        "scope": 4034,
                        "src": "730:23:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4029,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "730:7:18",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4032,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4034,
                        "src": "755:13:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4031,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "755:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "706:63:18"
                  },
                  "src": "692:78:18"
                }
              ],
              "scope": 4036,
              "src": "147:625:18"
            }
          ],
          "src": "39:734:18"
        },
        "id": 18
      },
      "multi-token-standard/contracts/mocks/ERC1155MintBurnMock.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/mocks/ERC1155MintBurnMock.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155": [
              4812
            ],
            "ERC1155Metadata": [
              5643
            ],
            "ERC1155MintBurn": [
              5902
            ],
            "ERC1155MintBurnMock": [
              4156
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155Metadata": [
              3892
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 4157,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4037,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:19"
            },
            {
              "id": 4038,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "62:33:19"
            },
            {
              "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155MintBurn.sol",
              "file": "../tokens/ERC1155/ERC1155MintBurn.sol",
              "id": 4039,
              "nodeType": "ImportDirective",
              "scope": 4157,
              "sourceUnit": 5903,
              "src": "97:47:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155Metadata.sol",
              "file": "../tokens/ERC1155/ERC1155Metadata.sol",
              "id": 4040,
              "nodeType": "ImportDirective",
              "scope": 4157,
              "sourceUnit": 5644,
              "src": "145:47:19",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4041,
                    "name": "ERC1155MintBurn",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5902,
                    "src": "227:15:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155MintBurn_$5902",
                      "typeString": "contract ERC1155MintBurn"
                    }
                  },
                  "id": 4042,
                  "nodeType": "InheritanceSpecifier",
                  "src": "227:15:19"
                },
                {
                  "baseName": {
                    "id": 4043,
                    "name": "ERC1155Metadata",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5643,
                    "src": "244:15:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155Metadata_$5643",
                      "typeString": "contract ERC1155Metadata"
                    }
                  },
                  "id": 4044,
                  "nodeType": "InheritanceSpecifier",
                  "src": "244:15:19"
                }
              ],
              "contractDependencies": [
                3875,
                3892,
                4812,
                5643,
                5902,
                7229
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 4156,
              "linearizedBaseContracts": [
                4156,
                5643,
                5902,
                4812,
                7229,
                3892,
                3875
              ],
              "name": "ERC1155MintBurnMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    4811,
                    5559
                  ],
                  "body": {
                    "id": 4060,
                    "nodeType": "Block",
                    "src": "841:55:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4057,
                              "name": "_interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4047,
                              "src": "878:12:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 4055,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "854:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155MintBurnMock_$4156",
                                "typeString": "contract super ERC1155MintBurnMock"
                              }
                            },
                            "id": 4056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5559,
                            "src": "854:23:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) pure returns (bool)"
                            }
                          },
                          "id": 4058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "854:37:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4054,
                        "id": 4059,
                        "nodeType": "Return",
                        "src": "847:44:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4045,
                    "nodeType": "StructuredDocumentation",
                    "src": "265:443:19",
                    "text": " @notice Query if a contract implements an interface\n @dev Parent contract inheriting multiple contracts with supportsInterface()\n      need to implement an overriding supportsInterface() function specifying\n      all inheriting contracts that have a supportsInterface() function.\n @param _interfaceID The interface identifier, as specified in ERC-165\n @return `true` if the contract implements `_interfaceID`"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 4061,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4051,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4049,
                        "name": "ERC1155",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 4812,
                        "src": "788:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155_$4812",
                          "typeString": "contract ERC1155"
                        }
                      },
                      {
                        "id": 4050,
                        "name": "ERC1155Metadata",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5643,
                        "src": "801:15:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155Metadata_$5643",
                          "typeString": "contract ERC1155Metadata"
                        }
                      }
                    ],
                    "src": "774:46:19"
                  },
                  "parameters": {
                    "id": 4048,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4047,
                        "mutability": "mutable",
                        "name": "_interfaceID",
                        "nodeType": "VariableDeclaration",
                        "scope": 4061,
                        "src": "743:19:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4046,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "743:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "737:29:19"
                  },
                  "returnParameters": {
                    "id": 4054,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4053,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4061,
                        "src": "835:4:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4052,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "835:4:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "834:6:19"
                  },
                  "scope": 4156,
                  "src": "711:185:19",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4082,
                    "nodeType": "Block",
                    "src": "1355:47:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4076,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4064,
                              "src": "1373:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4077,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4066,
                              "src": "1378:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4078,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4068,
                              "src": "1383:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4079,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4070,
                              "src": "1391:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 4073,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "1361:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155MintBurnMock_$4156",
                                "typeString": "contract super ERC1155MintBurnMock"
                              }
                            },
                            "id": 4075,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_mint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5705,
                            "src": "1361:11:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 4080,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1361:36:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4081,
                        "nodeType": "ExpressionStatement",
                        "src": "1361:36:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4062,
                    "nodeType": "StructuredDocumentation",
                    "src": "1021:238:19",
                    "text": " @dev Mint _value of tokens of a given id\n @param _to The address to mint tokens to.\n @param _id token id to mint\n @param _value The amount to be minted\n @param _data Data to be passed if receiver is contract"
                  },
                  "functionSelector": "a3f091f5",
                  "id": 4083,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mintMock",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4071,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4064,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4083,
                        "src": "1280:11:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4063,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1280:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4066,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4083,
                        "src": "1293:11:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4065,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1293:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4068,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4083,
                        "src": "1306:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4067,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1306:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4070,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4083,
                        "src": "1322:18:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4069,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1322:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1279:62:19"
                  },
                  "returnParameters": {
                    "id": 4072,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1355:0:19"
                  },
                  "scope": 4156,
                  "src": "1262:140:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4106,
                    "nodeType": "Block",
                    "src": "1785:54:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4100,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4086,
                              "src": "1808:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4101,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4089,
                              "src": "1813:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4102,
                              "name": "_values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4092,
                              "src": "1819:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4103,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4094,
                              "src": "1828:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 4097,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "1791:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155MintBurnMock_$4156",
                                "typeString": "contract super ERC1155MintBurnMock"
                              }
                            },
                            "id": 4099,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_batchMint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5792,
                            "src": "1791:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 4104,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1791:43:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4105,
                        "nodeType": "ExpressionStatement",
                        "src": "1791:43:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4084,
                    "nodeType": "StructuredDocumentation",
                    "src": "1406:258:19",
                    "text": " @dev Mint tokens for each ids in _ids\n @param _to The address to mint tokens to.\n @param _ids Array of ids to mint\n @param _values Array of amount of tokens to mint per id\n @param _data Data to be passed if receiver is contract"
                  },
                  "functionSelector": "d7a0ad90",
                  "id": 4107,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMintMock",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4095,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4086,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4107,
                        "src": "1690:11:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4085,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1690:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4089,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4107,
                        "src": "1703:21:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4087,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1703:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4088,
                          "nodeType": "ArrayTypeName",
                          "src": "1703:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4092,
                        "mutability": "mutable",
                        "name": "_values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4107,
                        "src": "1726:24:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4090,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1726:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4091,
                          "nodeType": "ArrayTypeName",
                          "src": "1726:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4094,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4107,
                        "src": "1752:18:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4093,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1752:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1689:82:19"
                  },
                  "returnParameters": {
                    "id": 4096,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1785:0:19"
                  },
                  "scope": 4156,
                  "src": "1667:172:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4125,
                    "nodeType": "Block",
                    "src": "2231:42:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4120,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4110,
                              "src": "2249:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4121,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4112,
                              "src": "2256:3:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4122,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4114,
                              "src": "2261:6:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 4117,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2237:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155MintBurnMock_$4156",
                                "typeString": "contract super ERC1155MintBurnMock"
                              }
                            },
                            "id": 4119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_burn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5830,
                            "src": "2237:11:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 4123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2237:31:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4124,
                        "nodeType": "ExpressionStatement",
                        "src": "2237:31:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4108,
                    "nodeType": "StructuredDocumentation",
                    "src": "1965:188:19",
                    "text": " @dev burn _value of tokens of a given token id\n @param _from The address to burn tokens from.\n @param _id token id to burn\n @param _value The amount to be burned"
                  },
                  "functionSelector": "437ecbe9",
                  "id": 4126,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnMock",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4115,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4110,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4126,
                        "src": "2174:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4109,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2174:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4112,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4126,
                        "src": "2189:11:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4111,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2189:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4114,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4126,
                        "src": "2202:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4113,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2202:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2173:44:19"
                  },
                  "returnParameters": {
                    "id": 4116,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2231:0:19"
                  },
                  "scope": 4156,
                  "src": "2156:117:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4146,
                    "nodeType": "Block",
                    "src": "2589:49:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4141,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4129,
                              "src": "2612:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4142,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4132,
                              "src": "2619:4:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4143,
                              "name": "_values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4135,
                              "src": "2625:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "expression": {
                              "id": 4138,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2595:5:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155MintBurnMock_$4156",
                                "typeString": "contract super ERC1155MintBurnMock"
                              }
                            },
                            "id": 4140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_batchBurn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5901,
                            "src": "2595:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 4144,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2595:38:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4145,
                        "nodeType": "ExpressionStatement",
                        "src": "2595:38:19"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4127,
                    "nodeType": "StructuredDocumentation",
                    "src": "2277:209:19",
                    "text": " @dev burn _value of tokens of a given token id\n @param _from The address to burn tokens from.\n @param _ids Array of token ids to burn\n @param _values Array of the amount to be burned"
                  },
                  "functionSelector": "bd7a6c41",
                  "id": 4147,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnMock",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4136,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4129,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4147,
                        "src": "2512:13:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4128,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2512:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4132,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4147,
                        "src": "2527:21:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4130,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2527:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4131,
                          "nodeType": "ArrayTypeName",
                          "src": "2527:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4135,
                        "mutability": "mutable",
                        "name": "_values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4147,
                        "src": "2550:24:19",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4133,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2550:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4134,
                          "nodeType": "ArrayTypeName",
                          "src": "2550:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2511:64:19"
                  },
                  "returnParameters": {
                    "id": 4137,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2589:0:19"
                  },
                  "scope": 4156,
                  "src": "2489:149:19",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4154,
                    "nodeType": "Block",
                    "src": "2794:60:19",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "455243313135354d6574614d696e744275726e4d6f636b3a20494e56414c49445f4d4554484f44",
                              "id": 4151,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2807:41:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a14409389543c5be2d3a34f066f3d8b4d59db7d4a318cfe221527e5c604f065c",
                                "typeString": "literal_string \"ERC1155MetaMintBurnMock: INVALID_METHOD\""
                              },
                              "value": "ERC1155MetaMintBurnMock: INVALID_METHOD"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_a14409389543c5be2d3a34f066f3d8b4d59db7d4a318cfe221527e5c604f065c",
                                "typeString": "literal_string \"ERC1155MetaMintBurnMock: INVALID_METHOD\""
                              }
                            ],
                            "id": 4150,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "2800:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 4152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2800:49:19",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4153,
                        "nodeType": "ExpressionStatement",
                        "src": "2800:49:19"
                      }
                    ]
                  },
                  "id": 4155,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4148,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2774:2:19"
                  },
                  "returnParameters": {
                    "id": 4149,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2794:0:19"
                  },
                  "scope": 4156,
                  "src": "2765:89:19",
                  "stateMutability": "nonpayable",
                  "virtual": true,
                  "visibility": "external"
                }
              ],
              "scope": 4157,
              "src": "195:2661:19"
            }
          ],
          "src": "39:2818:19"
        },
        "id": 19
      },
      "multi-token-standard/contracts/mocks/ERC1155MintBurnPackedBalanceMock.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/mocks/ERC1155MintBurnPackedBalanceMock.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155Metadata": [
              5643
            ],
            "ERC1155MintBurnPackedBalance": [
              6205
            ],
            "ERC1155MintBurnPackedBalanceMock": [
              4269
            ],
            "ERC1155PackedBalance": [
              7182
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155Metadata": [
              3892
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 4270,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4158,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:20"
            },
            {
              "id": 4159,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "62:33:20"
            },
            {
              "absolutePath": "multi-token-standard/contracts/tokens/ERC1155PackedBalance/ERC1155MintBurnPackedBalance.sol",
              "file": "../tokens/ERC1155PackedBalance/ERC1155MintBurnPackedBalance.sol",
              "id": 4160,
              "nodeType": "ImportDirective",
              "scope": 4270,
              "sourceUnit": 6206,
              "src": "97:73:20",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155Metadata.sol",
              "file": "../tokens/ERC1155/ERC1155Metadata.sol",
              "id": 4161,
              "nodeType": "ImportDirective",
              "scope": 4270,
              "sourceUnit": 5644,
              "src": "171:47:20",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4162,
                    "name": "ERC1155MintBurnPackedBalance",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6205,
                    "src": "266:28:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155MintBurnPackedBalance_$6205",
                      "typeString": "contract ERC1155MintBurnPackedBalance"
                    }
                  },
                  "id": 4163,
                  "nodeType": "InheritanceSpecifier",
                  "src": "266:28:20"
                },
                {
                  "baseName": {
                    "id": 4164,
                    "name": "ERC1155Metadata",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 5643,
                    "src": "296:15:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155Metadata_$5643",
                      "typeString": "contract ERC1155Metadata"
                    }
                  },
                  "id": 4165,
                  "nodeType": "InheritanceSpecifier",
                  "src": "296:15:20"
                }
              ],
              "contractDependencies": [
                3875,
                3892,
                5643,
                6205,
                7182,
                7229
              ],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 4269,
              "linearizedBaseContracts": [
                4269,
                5643,
                6205,
                7182,
                7229,
                3892,
                3875
              ],
              "name": "ERC1155MintBurnPackedBalanceMock",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "baseFunctions": [
                    5559,
                    7181
                  ],
                  "body": {
                    "id": 4181,
                    "nodeType": "Block",
                    "src": "1027:55:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4178,
                              "name": "_interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4168,
                              "src": "1064:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 4176,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "1040:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155MintBurnPackedBalanceMock_$4269",
                                "typeString": "contract super ERC1155MintBurnPackedBalanceMock"
                              }
                            },
                            "id": 4177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5559,
                            "src": "1040:23:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) pure returns (bool)"
                            }
                          },
                          "id": 4179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1040:37:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4175,
                        "id": 4180,
                        "nodeType": "Return",
                        "src": "1033:44:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4166,
                    "nodeType": "StructuredDocumentation",
                    "src": "438:443:20",
                    "text": " @notice Query if a contract implements an interface\n @dev Parent contract inheriting multiple contracts with supportsInterface()\n      need to implement an overriding supportsInterface() function specifying\n      all inheriting contracts that have a supportsInterface() function.\n @param _interfaceID The interface identifier, as specified in ERC-165\n @return `true` if the contract implements `_interfaceID`"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 4182,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4172,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [
                      {
                        "id": 4170,
                        "name": "ERC1155PackedBalance",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 7182,
                        "src": "961:20:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155PackedBalance_$7182",
                          "typeString": "contract ERC1155PackedBalance"
                        }
                      },
                      {
                        "id": 4171,
                        "name": "ERC1155Metadata",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5643,
                        "src": "987:15:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ERC1155Metadata_$5643",
                          "typeString": "contract ERC1155Metadata"
                        }
                      }
                    ],
                    "src": "947:59:20"
                  },
                  "parameters": {
                    "id": 4169,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4168,
                        "mutability": "mutable",
                        "name": "_interfaceID",
                        "nodeType": "VariableDeclaration",
                        "scope": 4182,
                        "src": "916:19:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4167,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "916:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "910:29:20"
                  },
                  "returnParameters": {
                    "id": 4175,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4174,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4182,
                        "src": "1021:4:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4173,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1021:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1020:6:20"
                  },
                  "scope": 4269,
                  "src": "884:198:20",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4201,
                    "nodeType": "Block",
                    "src": "1541:41:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4195,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4185,
                              "src": "1553:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4196,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4187,
                              "src": "1558:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4197,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4189,
                              "src": "1563:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4198,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4191,
                              "src": "1571:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4194,
                            "name": "_mint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5954,
                            "src": "1547:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 4199,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1547:30:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4200,
                        "nodeType": "ExpressionStatement",
                        "src": "1547:30:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4183,
                    "nodeType": "StructuredDocumentation",
                    "src": "1207:238:20",
                    "text": " @dev Mint _value of tokens of a given id\n @param _to The address to mint tokens to.\n @param _id token id to mint\n @param _value The amount to be minted\n @param _data Data to be passed if receiver is contract"
                  },
                  "functionSelector": "a3f091f5",
                  "id": 4202,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mintMock",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4185,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4202,
                        "src": "1466:11:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4184,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1466:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4187,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4202,
                        "src": "1479:11:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4186,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1479:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4189,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4202,
                        "src": "1492:14:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4188,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1492:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4191,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4202,
                        "src": "1508:18:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4190,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1508:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1465:62:20"
                  },
                  "returnParameters": {
                    "id": 4193,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1541:0:20"
                  },
                  "scope": 4269,
                  "src": "1448:134:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4223,
                    "nodeType": "Block",
                    "src": "1965:48:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4217,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4205,
                              "src": "1982:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4218,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4208,
                              "src": "1987:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4219,
                              "name": "_values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4211,
                              "src": "1993:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4220,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4213,
                              "src": "2002:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4216,
                            "name": "_batchMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6111,
                            "src": "1971:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)"
                            }
                          },
                          "id": 4221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1971:37:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4222,
                        "nodeType": "ExpressionStatement",
                        "src": "1971:37:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4203,
                    "nodeType": "StructuredDocumentation",
                    "src": "1586:258:20",
                    "text": " @dev Mint tokens for each ids in _ids\n @param _to The address to mint tokens to.\n @param _ids Array of ids to mint\n @param _values Array of amount of tokens to mint per id\n @param _data Data to be passed if receiver is contract"
                  },
                  "functionSelector": "d7a0ad90",
                  "id": 4224,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchMintMock",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4214,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4205,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4224,
                        "src": "1870:11:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4204,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1870:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4208,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4224,
                        "src": "1883:21:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4206,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1883:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4207,
                          "nodeType": "ArrayTypeName",
                          "src": "1883:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4211,
                        "mutability": "mutable",
                        "name": "_values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4224,
                        "src": "1906:24:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4209,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1906:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4210,
                          "nodeType": "ArrayTypeName",
                          "src": "1906:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4213,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4224,
                        "src": "1932:18:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4212,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1932:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1869:82:20"
                  },
                  "returnParameters": {
                    "id": 4215,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1965:0:20"
                  },
                  "scope": 4269,
                  "src": "1847:166:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4240,
                    "nodeType": "Block",
                    "src": "2405:36:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4235,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4227,
                              "src": "2417:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4236,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4229,
                              "src": "2424:3:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4237,
                              "name": "_value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4231,
                              "src": "2429:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4234,
                            "name": "_burn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6142,
                            "src": "2411:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256,uint256)"
                            }
                          },
                          "id": 4238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2411:25:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4239,
                        "nodeType": "ExpressionStatement",
                        "src": "2411:25:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4225,
                    "nodeType": "StructuredDocumentation",
                    "src": "2139:188:20",
                    "text": " @dev burn _value of tokens of a given token id\n @param _from The address to burn tokens from.\n @param _id token id to burn\n @param _value The amount to be burned"
                  },
                  "functionSelector": "437ecbe9",
                  "id": 4241,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "burnMock",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4232,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4227,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4241,
                        "src": "2348:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4226,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2348:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4229,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4241,
                        "src": "2363:11:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4228,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2363:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4231,
                        "mutability": "mutable",
                        "name": "_value",
                        "nodeType": "VariableDeclaration",
                        "scope": 4241,
                        "src": "2376:14:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4230,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2376:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2347:44:20"
                  },
                  "returnParameters": {
                    "id": 4233,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2405:0:20"
                  },
                  "scope": 4269,
                  "src": "2330:111:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4259,
                    "nodeType": "Block",
                    "src": "2757:43:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4254,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4244,
                              "src": "2774:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4255,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4247,
                              "src": "2781:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4256,
                              "name": "_values",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4250,
                              "src": "2787:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 4253,
                            "name": "_batchBurn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6204,
                            "src": "2763:10:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 4257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2763:32:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4258,
                        "nodeType": "ExpressionStatement",
                        "src": "2763:32:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4242,
                    "nodeType": "StructuredDocumentation",
                    "src": "2445:209:20",
                    "text": " @dev burn _value of tokens of a given token id\n @param _from The address to burn tokens from.\n @param _ids Array of token ids to burn\n @param _values Array of the amount to be burned"
                  },
                  "functionSelector": "bd7a6c41",
                  "id": 4260,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "batchBurnMock",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4251,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4244,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4260,
                        "src": "2680:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4243,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2680:7:20",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4247,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4260,
                        "src": "2695:21:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4245,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2695:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4246,
                          "nodeType": "ArrayTypeName",
                          "src": "2695:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4250,
                        "mutability": "mutable",
                        "name": "_values",
                        "nodeType": "VariableDeclaration",
                        "scope": 4260,
                        "src": "2718:24:20",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4248,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2718:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4249,
                          "nodeType": "ArrayTypeName",
                          "src": "2718:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2679:64:20"
                  },
                  "returnParameters": {
                    "id": 4252,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2757:0:20"
                  },
                  "scope": 4269,
                  "src": "2657:143:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4267,
                    "nodeType": "Block",
                    "src": "2947:73:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "455243313135354d6574614d696e744275726e5061636b656442616c616e63654d6f636b3a20494e56414c49445f4d4554484f44",
                              "id": 4264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2960:54:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dd3528a478237acd768e367188bd6147b1a4b40dbf3a30af8b1cf6e449468a07",
                                "typeString": "literal_string \"ERC1155MetaMintBurnPackedBalanceMock: INVALID_METHOD\""
                              },
                              "value": "ERC1155MetaMintBurnPackedBalanceMock: INVALID_METHOD"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_dd3528a478237acd768e367188bd6147b1a4b40dbf3a30af8b1cf6e449468a07",
                                "typeString": "literal_string \"ERC1155MetaMintBurnPackedBalanceMock: INVALID_METHOD\""
                              }
                            ],
                            "id": 4263,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "2953:6:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 4265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2953:62:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4266,
                        "nodeType": "ExpressionStatement",
                        "src": "2953:62:20"
                      }
                    ]
                  },
                  "id": 4268,
                  "implemented": true,
                  "kind": "fallback",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4261,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2935:2:20"
                  },
                  "returnParameters": {
                    "id": 4262,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2947:0:20"
                  },
                  "scope": 4269,
                  "src": "2926:94:20",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 4270,
              "src": "221:2801:20"
            }
          ],
          "src": "39:2984:20"
        },
        "id": 20
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155": [
              4812
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 4813,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4271,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:21"
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/SafeMath.sol",
              "file": "../../utils/SafeMath.sol",
              "id": 4272,
              "nodeType": "ImportDirective",
              "scope": 4813,
              "sourceUnit": 7468,
              "src": "63:34:21",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol",
              "file": "../../interfaces/IERC1155TokenReceiver.sol",
              "id": 4273,
              "nodeType": "ImportDirective",
              "scope": 4813,
              "sourceUnit": 3931,
              "src": "98:52:21",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155.sol",
              "file": "../../interfaces/IERC1155.sol",
              "id": 4274,
              "nodeType": "ImportDirective",
              "scope": 4813,
              "sourceUnit": 3876,
              "src": "151:39:21",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/Address.sol",
              "file": "../../utils/Address.sol",
              "id": 4275,
              "nodeType": "ImportDirective",
              "scope": 4813,
              "sourceUnit": 7212,
              "src": "191:33:21",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/ERC165.sol",
              "file": "../../utils/ERC165.sol",
              "id": 4276,
              "nodeType": "ImportDirective",
              "scope": 4813,
              "sourceUnit": 7230,
              "src": "225:32:21",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4278,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3875,
                    "src": "344:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$3875",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "id": 4279,
                  "nodeType": "InheritanceSpecifier",
                  "src": "344:8:21"
                },
                {
                  "baseName": {
                    "id": 4280,
                    "name": "ERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7229,
                    "src": "354:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC165_$7229",
                      "typeString": "contract ERC165"
                    }
                  },
                  "id": 4281,
                  "nodeType": "InheritanceSpecifier",
                  "src": "354:6:21"
                }
              ],
              "contractDependencies": [
                3875,
                7229
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4277,
                "nodeType": "StructuredDocumentation",
                "src": "260:63:21",
                "text": " @dev Implementation of Multi-Token Standard contract"
              },
              "fullyImplemented": true,
              "id": 4812,
              "linearizedBaseContracts": [
                4812,
                7229,
                3875
              ],
              "name": "ERC1155",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4284,
                  "libraryName": {
                    "id": 4282,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7467,
                    "src": "371:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$7467",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "365:27:21",
                  "typeName": {
                    "id": 4283,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "384:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 4287,
                  "libraryName": {
                    "id": 4285,
                    "name": "Address",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7211,
                    "src": "401:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Address_$7211",
                      "typeString": "library Address"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "395:26:21",
                  "typeName": {
                    "id": 4286,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "413:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 4290,
                  "mutability": "constant",
                  "name": "ERC1155_RECEIVED_VALUE",
                  "nodeType": "VariableDeclaration",
                  "scope": 4812,
                  "src": "581:60:21",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 4288,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "581:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786632336136653631",
                    "id": 4289,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "631:10:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4063915617_by_1",
                      "typeString": "int_const 4063915617"
                    },
                    "value": "0xf23a6e61"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 4293,
                  "mutability": "constant",
                  "name": "ERC1155_BATCH_RECEIVED_VALUE",
                  "nodeType": "VariableDeclaration",
                  "scope": 4812,
                  "src": "645:66:21",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 4291,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "645:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786263313937633831",
                    "id": 4292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "701:10:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3155786881_by_1",
                      "typeString": "int_const 3155786881"
                    },
                    "value": "0xbc197c81"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4299,
                  "mutability": "mutable",
                  "name": "balances",
                  "nodeType": "VariableDeclaration",
                  "scope": 4812,
                  "src": "738:66:21",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(uint256 => uint256))"
                  },
                  "typeName": {
                    "id": 4298,
                    "keyType": {
                      "id": 4294,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "747:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "738:48:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(uint256 => uint256))"
                    },
                    "valueType": {
                      "id": 4297,
                      "keyType": {
                        "id": 4295,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "766:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "758:27:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      },
                      "valueType": {
                        "id": 4296,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "777:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4305,
                  "mutability": "mutable",
                  "name": "operators",
                  "nodeType": "VariableDeclaration",
                  "scope": 4812,
                  "src": "833:64:21",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 4304,
                    "keyType": {
                      "id": 4300,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "842:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "833:45:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 4303,
                      "keyType": {
                        "id": 4301,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "861:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "853:24:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 4302,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "872:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3817
                  ],
                  "body": {
                    "id": 4362,
                    "nodeType": "Block",
                    "src": "1499:430:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 4331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 4324,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 4321,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "1514:3:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 4322,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "1514:10:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 4323,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4308,
                                      "src": "1528:5:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "1514:19:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 4325,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1513:21:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 4327,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4308,
                                    "src": "1555:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 4328,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "1562:3:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 4329,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "1562:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 4326,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4703,
                                  "src": "1538:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 4330,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1538:35:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "1513:60:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52",
                              "id": 4332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1575:44:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_391321fa85bb678df91a5e72636171ccb12770d7f5ab9dc059447ddcfd15a6c8",
                                "typeString": "literal_string \"ERC1155#safeTransferFrom: INVALID_OPERATOR\""
                              },
                              "value": "ERC1155#safeTransferFrom: INVALID_OPERATOR"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_391321fa85bb678df91a5e72636171ccb12770d7f5ab9dc059447ddcfd15a6c8",
                                "typeString": "literal_string \"ERC1155#safeTransferFrom: INVALID_OPERATOR\""
                              }
                            ],
                            "id": 4320,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1505:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4333,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1505:115:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4334,
                        "nodeType": "ExpressionStatement",
                        "src": "1505:115:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4341,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4336,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4310,
                                "src": "1634:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 4339,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1649:1:21",
                                    "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": 4338,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1641:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4337,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1641:7:21",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1641:10:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "1634:17:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4552433131353523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54",
                              "id": 4342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1652:45:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0bff6da1c1b80dde62b2a49dd7ff5f7217f2027603d1daa34872c0143a6e39a0",
                                "typeString": "literal_string \"ERC1155#safeTransferFrom: INVALID_RECIPIENT\""
                              },
                              "value": "ERC1155#safeTransferFrom: INVALID_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0bff6da1c1b80dde62b2a49dd7ff5f7217f2027603d1daa34872c0143a6e39a0",
                                "typeString": "literal_string \"ERC1155#safeTransferFrom: INVALID_RECIPIENT\""
                              }
                            ],
                            "id": 4335,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1626:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1626:72:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4344,
                        "nodeType": "ExpressionStatement",
                        "src": "1626:72:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4346,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4308,
                              "src": "1827:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4347,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4310,
                              "src": "1834:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4348,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4312,
                              "src": "1839:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4349,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4314,
                              "src": "1844:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4345,
                            "name": "_safeTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4475,
                            "src": "1809:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 4350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1809:43:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4351,
                        "nodeType": "ExpressionStatement",
                        "src": "1809:43:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4353,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4308,
                              "src": "1881:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4354,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4310,
                              "src": "1888:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4355,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4312,
                              "src": "1893:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4356,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4314,
                              "src": "1898:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4357,
                                "name": "gasleft",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -7,
                                "src": "1907:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 4358,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1907:9:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4359,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4316,
                              "src": "1918:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4352,
                            "name": "_callonERC1155Received",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4520,
                            "src": "1858:22:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 4360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1858:66:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4361,
                        "nodeType": "ExpressionStatement",
                        "src": "1858:66:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4306,
                    "nodeType": "StructuredDocumentation",
                    "src": "1024:346:21",
                    "text": " @notice Transfers amount amount of an _id from the _from address to the _to address specified\n @param _from    Source address\n @param _to      Target address\n @param _id      ID of the token type\n @param _amount  Transfered amount\n @param _data    Additional data with no specified format, sent in call to `_to`"
                  },
                  "functionSelector": "f242432a",
                  "id": 4363,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4318,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1488:8:21"
                  },
                  "parameters": {
                    "id": 4317,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4308,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4363,
                        "src": "1399:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4307,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1399:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4310,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4363,
                        "src": "1414:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4309,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1414:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4312,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4363,
                        "src": "1427:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4311,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1427:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4314,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4363,
                        "src": "1440:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4313,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1440:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4316,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4363,
                        "src": "1457:18:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4315,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1457:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1398:78:21"
                  },
                  "returnParameters": {
                    "id": 4319,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1499:0:21"
                  },
                  "scope": 4812,
                  "src": "1373:556:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3833
                  ],
                  "body": {
                    "id": 4422,
                    "nodeType": "Block",
                    "src": "2463:371:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 4391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 4384,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 4381,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "2498:3:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 4382,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "2498:10:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 4383,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4366,
                                      "src": "2512:5:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "2498:19:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 4385,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2497:21:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 4387,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4366,
                                    "src": "2539:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 4388,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "2546:3:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 4389,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "2546:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 4386,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4703,
                                  "src": "2522:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 4390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2522:35:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2497:60:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52",
                              "id": 4392,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2559:49:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_af2375b4d68efb9f9971de37573333a29442946b4cf45dada7b72253ac12f7e9",
                                "typeString": "literal_string \"ERC1155#safeBatchTransferFrom: INVALID_OPERATOR\""
                              },
                              "value": "ERC1155#safeBatchTransferFrom: INVALID_OPERATOR"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_af2375b4d68efb9f9971de37573333a29442946b4cf45dada7b72253ac12f7e9",
                                "typeString": "literal_string \"ERC1155#safeBatchTransferFrom: INVALID_OPERATOR\""
                              }
                            ],
                            "id": 4380,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2489:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4393,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2489:120:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4394,
                        "nodeType": "ExpressionStatement",
                        "src": "2489:120:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4401,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4396,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4368,
                                "src": "2623:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 4399,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2638:1:21",
                                    "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": 4398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2630:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4397,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2630:7:21",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4400,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2630:10:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2623:17:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524331313535237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54",
                              "id": 4402,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2642:50:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_909754ecf431a77f5e0445d029892e7f6b373421021181202e7a0bd0151a73cc",
                                "typeString": "literal_string \"ERC1155#safeBatchTransferFrom: INVALID_RECIPIENT\""
                              },
                              "value": "ERC1155#safeBatchTransferFrom: INVALID_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_909754ecf431a77f5e0445d029892e7f6b373421021181202e7a0bd0151a73cc",
                                "typeString": "literal_string \"ERC1155#safeBatchTransferFrom: INVALID_RECIPIENT\""
                              }
                            ],
                            "id": 4395,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2615:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4403,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2615:78:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4404,
                        "nodeType": "ExpressionStatement",
                        "src": "2615:78:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4406,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4366,
                              "src": "2723:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4407,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4368,
                              "src": "2730:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4408,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4371,
                              "src": "2735:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4409,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "2741:8:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 4405,
                            "name": "_safeBatchTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4612,
                            "src": "2700:22:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 4410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2700:50:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4411,
                        "nodeType": "ExpressionStatement",
                        "src": "2700:50:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4413,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4366,
                              "src": "2784:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4414,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4368,
                              "src": "2791:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4415,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4371,
                              "src": "2796:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4416,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4374,
                              "src": "2802:8:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 4417,
                                "name": "gasleft",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -7,
                                "src": "2812:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 4418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2812:9:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4419,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4376,
                              "src": "2823:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4412,
                            "name": "_callonERC1155BatchReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4659,
                            "src": "2756:27:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,uint256,bytes memory)"
                            }
                          },
                          "id": 4420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2756:73:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4421,
                        "nodeType": "ExpressionStatement",
                        "src": "2756:73:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4364,
                    "nodeType": "StructuredDocumentation",
                    "src": "1933:376:21",
                    "text": " @notice Send multiple types of Tokens from the _from address to the _to address (with safety call)\n @param _from     Source addresses\n @param _to       Target addresses\n @param _ids      IDs of each token type\n @param _amounts  Transfer amounts per token type\n @param _data     Additional data with no specified format, sent in call to `_to`"
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 4423,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4378,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2452:8:21"
                  },
                  "parameters": {
                    "id": 4377,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4366,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4423,
                        "src": "2343:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4365,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2343:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4368,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4423,
                        "src": "2358:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4367,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2358:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4371,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4423,
                        "src": "2371:21:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4369,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2371:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4370,
                          "nodeType": "ArrayTypeName",
                          "src": "2371:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4374,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 4423,
                        "src": "2394:25:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4372,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2394:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4373,
                          "nodeType": "ArrayTypeName",
                          "src": "2394:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4376,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4423,
                        "src": "2421:18:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4375,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2421:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2342:98:21"
                  },
                  "returnParameters": {
                    "id": 4379,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2463:0:21"
                  },
                  "scope": 4812,
                  "src": "2312:522:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4474,
                    "nodeType": "Block",
                    "src": "3324:267:21",
                    "statements": [
                      {
                        "expression": {
                          "id": 4448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 4435,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4299,
                                "src": "3353:8:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 4438,
                              "indexExpression": {
                                "id": 4436,
                                "name": "_from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4426,
                                "src": "3362:5:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3353:15:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4439,
                            "indexExpression": {
                              "id": 4437,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4430,
                              "src": "3369:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3353:20:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 4446,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4432,
                                "src": "3401:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 4440,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4299,
                                    "src": "3376:8:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => uint256))"
                                    }
                                  },
                                  "id": 4442,
                                  "indexExpression": {
                                    "id": 4441,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4426,
                                    "src": "3385:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3376:15:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 4444,
                                "indexExpression": {
                                  "id": 4443,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4430,
                                  "src": "3392:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3376:20:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7418,
                              "src": "3376:24:21",
                              "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": 4447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3376:33:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3353:56:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4449,
                        "nodeType": "ExpressionStatement",
                        "src": "3353:56:21"
                      },
                      {
                        "expression": {
                          "id": 4463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 4450,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4299,
                                "src": "3434:8:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 4453,
                              "indexExpression": {
                                "id": 4451,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4428,
                                "src": "3443:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3434:13:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 4454,
                            "indexExpression": {
                              "id": 4452,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4430,
                              "src": "3448:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3434:18:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 4461,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4432,
                                "src": "3478:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 4455,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4299,
                                    "src": "3455:8:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => uint256))"
                                    }
                                  },
                                  "id": 4457,
                                  "indexExpression": {
                                    "id": 4456,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4428,
                                    "src": "3464:3:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3455:13:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 4459,
                                "indexExpression": {
                                  "id": 4458,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4430,
                                  "src": "3469:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3455:18:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4460,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7444,
                              "src": "3455:22:21",
                              "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": 4462,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3455:31:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3434:52:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4464,
                        "nodeType": "ExpressionStatement",
                        "src": "3434:52:21"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 4466,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3549:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3549:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 4468,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4426,
                              "src": "3561:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4469,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4428,
                              "src": "3568:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4470,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4430,
                              "src": "3573:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4471,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4432,
                              "src": "3578:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4465,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3779,
                            "src": "3534:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 4472,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3534:52:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4473,
                        "nodeType": "EmitStatement",
                        "src": "3529:57:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4424,
                    "nodeType": "StructuredDocumentation",
                    "src": "2960:261:21",
                    "text": " @notice Transfers amount amount of an _id from the _from address to the _to address specified\n @param _from    Source address\n @param _to      Target address\n @param _id      ID of the token type\n @param _amount  Transfered amount"
                  },
                  "id": 4475,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4433,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4426,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4475,
                        "src": "3251:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4425,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3251:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4428,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4475,
                        "src": "3266:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4427,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3266:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4430,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4475,
                        "src": "3279:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4429,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3279:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4432,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4475,
                        "src": "3292:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4431,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3292:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3250:58:21"
                  },
                  "returnParameters": {
                    "id": 4434,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3324:0:21"
                  },
                  "scope": 4812,
                  "src": "3224:367:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4519,
                    "nodeType": "Block",
                    "src": "3843:312:21",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4491,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4480,
                              "src": "3891:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4492,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7210,
                            "src": "3891:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 4493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3891:16:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4518,
                        "nodeType": "IfStatement",
                        "src": "3887:264:21",
                        "trueBody": {
                          "id": 4517,
                          "nodeType": "Block",
                          "src": "3909:242:21",
                          "statements": [
                            {
                              "assignments": [
                                4495
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4495,
                                  "mutability": "mutable",
                                  "name": "retval",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4517,
                                  "src": "3917:13:21",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 4494,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3917:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4509,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 4502,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "3994:3:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 4503,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "3994:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 4504,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4478,
                                    "src": "4006:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4505,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4482,
                                    "src": "4013:3:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4506,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4484,
                                    "src": "4018:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4507,
                                    "name": "_data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4488,
                                    "src": "4027:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 4497,
                                          "name": "_to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4480,
                                          "src": "3955:3:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 4496,
                                        "name": "IERC1155TokenReceiver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3930,
                                        "src": "3933:21:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3930_$",
                                          "typeString": "type(contract IERC1155TokenReceiver)"
                                        }
                                      },
                                      "id": 4498,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3933:26:21",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$3930",
                                        "typeString": "contract IERC1155TokenReceiver"
                                      }
                                    },
                                    "id": 4499,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "onERC1155Received",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3911,
                                    "src": "3933:44:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                    }
                                  },
                                  "id": 4501,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "gas"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 4500,
                                      "name": "_gasLimit",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4486,
                                      "src": "3983:9:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "src": "3933:60:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$gas",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 4508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3933:100:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3917:116:21"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 4513,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4511,
                                      "name": "retval",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4495,
                                      "src": "4049:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 4512,
                                      "name": "ERC1155_RECEIVED_VALUE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4290,
                                      "src": "4059:22:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "4049:32:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524331313535235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745",
                                    "id": 4514,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4083:60:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d1e4892029f7262891cacb3a63cb31fcb3ef3a098f2da66a45f307373dd74740",
                                      "typeString": "literal_string \"ERC1155#_callonERC1155Received: INVALID_ON_RECEIVE_MESSAGE\""
                                    },
                                    "value": "ERC1155#_callonERC1155Received: INVALID_ON_RECEIVE_MESSAGE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_d1e4892029f7262891cacb3a63cb31fcb3ef3a098f2da66a45f307373dd74740",
                                      "typeString": "literal_string \"ERC1155#_callonERC1155Received: INVALID_ON_RECEIVE_MESSAGE\""
                                    }
                                  ],
                                  "id": 4510,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "4041:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4515,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4041:103:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4516,
                              "nodeType": "ExpressionStatement",
                              "src": "4041:103:21"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4476,
                    "nodeType": "StructuredDocumentation",
                    "src": "3595:101:21",
                    "text": " @notice Verifies if receiver is contract and if so, calls (_to).onERC1155Received(...)"
                  },
                  "id": 4520,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callonERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4489,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4478,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4520,
                        "src": "3731:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4477,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3731:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4480,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4520,
                        "src": "3746:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4479,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3746:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4482,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4520,
                        "src": "3759:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4481,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3759:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4484,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4520,
                        "src": "3772:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4483,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3772:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4486,
                        "mutability": "mutable",
                        "name": "_gasLimit",
                        "nodeType": "VariableDeclaration",
                        "scope": 4520,
                        "src": "3789:17:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4485,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3789:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4488,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4520,
                        "src": "3808:18:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4487,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3808:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3730:97:21"
                  },
                  "returnParameters": {
                    "id": 4490,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3843:0:21"
                  },
                  "scope": 4812,
                  "src": "3699:456:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4611,
                    "nodeType": "Block",
                    "src": "4577:545:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4535,
                                  "name": "_ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4528,
                                  "src": "4591:4:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4536,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "4591:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 4537,
                                  "name": "_amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4531,
                                  "src": "4606:8:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "4606:15:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4591:30:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "45524331313535235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e475448",
                              "id": 4540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4623:55:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4f5f172baf37961126779b1494b916cae331a9ccc62d5cf3660ee672bc15e9e3",
                                "typeString": "literal_string \"ERC1155#_safeBatchTransferFrom: INVALID_ARRAYS_LENGTH\""
                              },
                              "value": "ERC1155#_safeBatchTransferFrom: INVALID_ARRAYS_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4f5f172baf37961126779b1494b916cae331a9ccc62d5cf3660ee672bc15e9e3",
                                "typeString": "literal_string \"ERC1155#_safeBatchTransferFrom: INVALID_ARRAYS_LENGTH\""
                              }
                            ],
                            "id": 4534,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4583:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4583:96:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4542,
                        "nodeType": "ExpressionStatement",
                        "src": "4583:96:21"
                      },
                      {
                        "assignments": [
                          4544
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4544,
                            "mutability": "mutable",
                            "name": "nTransfer",
                            "nodeType": "VariableDeclaration",
                            "scope": 4611,
                            "src": "4723:17:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4543,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4723:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4547,
                        "initialValue": {
                          "expression": {
                            "id": 4545,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4528,
                            "src": "4743:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 4546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4743:11:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4723:31:21"
                      },
                      {
                        "body": {
                          "id": 4600,
                          "nodeType": "Block",
                          "src": "4832:203:21",
                          "statements": [
                            {
                              "expression": {
                                "id": 4577,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 4558,
                                      "name": "balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4299,
                                      "src": "4888:8:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => uint256))"
                                      }
                                    },
                                    "id": 4563,
                                    "indexExpression": {
                                      "id": 4559,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4523,
                                      "src": "4897:5:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4888:15:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 4564,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 4560,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4528,
                                      "src": "4904:4:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 4562,
                                    "indexExpression": {
                                      "id": 4561,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4549,
                                      "src": "4909:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4904:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4888:24:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 4573,
                                        "name": "_amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4531,
                                        "src": "4944:8:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 4575,
                                      "indexExpression": {
                                        "id": 4574,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4549,
                                        "src": "4953:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4944:11:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "id": 4565,
                                          "name": "balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4299,
                                          "src": "4915:8:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                            "typeString": "mapping(address => mapping(uint256 => uint256))"
                                          }
                                        },
                                        "id": 4567,
                                        "indexExpression": {
                                          "id": 4566,
                                          "name": "_from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4523,
                                          "src": "4924:5:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4915:15:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 4571,
                                      "indexExpression": {
                                        "baseExpression": {
                                          "id": 4568,
                                          "name": "_ids",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4528,
                                          "src": "4931:4:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 4570,
                                        "indexExpression": {
                                          "id": 4569,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4549,
                                          "src": "4936:1:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4931:7:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4915:24:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4572,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7418,
                                    "src": "4915:28:21",
                                    "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": 4576,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4915:41:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4888:68:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4578,
                              "nodeType": "ExpressionStatement",
                              "src": "4888:68:21"
                            },
                            {
                              "expression": {
                                "id": 4598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 4579,
                                      "name": "balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4299,
                                      "src": "4964:8:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => uint256))"
                                      }
                                    },
                                    "id": 4584,
                                    "indexExpression": {
                                      "id": 4580,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4525,
                                      "src": "4973:3:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4964:13:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 4585,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 4581,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4528,
                                      "src": "4978:4:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 4583,
                                    "indexExpression": {
                                      "id": 4582,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4549,
                                      "src": "4983:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4978:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4964:22:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 4594,
                                        "name": "_amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4531,
                                        "src": "5016:8:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 4596,
                                      "indexExpression": {
                                        "id": 4595,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4549,
                                        "src": "5025:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "5016:11:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "id": 4586,
                                          "name": "balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4299,
                                          "src": "4989:8:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                            "typeString": "mapping(address => mapping(uint256 => uint256))"
                                          }
                                        },
                                        "id": 4588,
                                        "indexExpression": {
                                          "id": 4587,
                                          "name": "_to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4525,
                                          "src": "4998:3:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "4989:13:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 4592,
                                      "indexExpression": {
                                        "baseExpression": {
                                          "id": 4589,
                                          "name": "_ids",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4528,
                                          "src": "5003:4:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 4591,
                                        "indexExpression": {
                                          "id": 4590,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4549,
                                          "src": "5008:1:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "5003:7:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "4989:22:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4593,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7444,
                                    "src": "4989:26:21",
                                    "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": 4597,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4989:39:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4964:64:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4599,
                              "nodeType": "ExpressionStatement",
                              "src": "4964:64:21"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4552,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4549,
                            "src": "4812:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 4553,
                            "name": "nTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4544,
                            "src": "4816:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4812:13:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4601,
                        "initializationExpression": {
                          "assignments": [
                            4549
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4549,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 4601,
                              "src": "4797:9:21",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4548,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4797:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4551,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 4550,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4809:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4797:13:21"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4556,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4827:3:21",
                            "subExpression": {
                              "id": 4555,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4549,
                              "src": "4827:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4557,
                          "nodeType": "ExpressionStatement",
                          "src": "4827:3:21"
                        },
                        "nodeType": "ForStatement",
                        "src": "4792:243:21"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 4603,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5078:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "5078:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 4605,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4523,
                              "src": "5090:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4606,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4525,
                              "src": "5097:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4607,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4528,
                              "src": "5102:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 4608,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4531,
                              "src": "5108:8:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 4602,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3794,
                            "src": "5064:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 4609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5064:53:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4610,
                        "nodeType": "EmitStatement",
                        "src": "5059:58:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4521,
                    "nodeType": "StructuredDocumentation",
                    "src": "4159:290:21",
                    "text": " @notice Send multiple types of Tokens from the _from address to the _to address (with safety call)\n @param _from     Source addresses\n @param _to       Target addresses\n @param _ids      IDs of each token type\n @param _amounts  Transfer amounts per token type"
                  },
                  "id": 4612,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4532,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4523,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4612,
                        "src": "4484:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4522,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4484:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4525,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4612,
                        "src": "4499:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4524,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4499:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4528,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4612,
                        "src": "4512:21:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4526,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4512:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4527,
                          "nodeType": "ArrayTypeName",
                          "src": "4512:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4531,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 4612,
                        "src": "4535:25:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4529,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4535:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4530,
                          "nodeType": "ArrayTypeName",
                          "src": "4535:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4483:78:21"
                  },
                  "returnParameters": {
                    "id": 4533,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4577:0:21"
                  },
                  "scope": 4812,
                  "src": "4452:670:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4658,
                    "nodeType": "Block",
                    "src": "5404:334:21",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 4630,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4617,
                              "src": "5456:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 4631,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7210,
                            "src": "5456:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 4632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5456:16:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4657,
                        "nodeType": "IfStatement",
                        "src": "5452:282:21",
                        "trueBody": {
                          "id": 4656,
                          "nodeType": "Block",
                          "src": "5474:260:21",
                          "statements": [
                            {
                              "assignments": [
                                4634
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4634,
                                  "mutability": "mutable",
                                  "name": "retval",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4656,
                                  "src": "5482:13:21",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 4633,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5482:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4648,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 4641,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5564:3:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 4642,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "5564:10:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 4643,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4615,
                                    "src": "5576:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4644,
                                    "name": "_ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4620,
                                    "src": "5583:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 4645,
                                    "name": "_amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4623,
                                    "src": "5589:8:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 4646,
                                    "name": "_data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4627,
                                    "src": "5599:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 4636,
                                          "name": "_to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4617,
                                          "src": "5520:3:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 4635,
                                        "name": "IERC1155TokenReceiver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3930,
                                        "src": "5498:21:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3930_$",
                                          "typeString": "type(contract IERC1155TokenReceiver)"
                                        }
                                      },
                                      "id": 4637,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5498:26:21",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$3930",
                                        "typeString": "contract IERC1155TokenReceiver"
                                      }
                                    },
                                    "id": 4638,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "onERC1155BatchReceived",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3929,
                                    "src": "5498:49:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                    }
                                  },
                                  "id": 4640,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "gas"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 4639,
                                      "name": "_gasLimit",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4625,
                                      "src": "5553:9:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "src": "5498:65:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$gas",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 4647,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5498:107:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5482:123:21"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 4652,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4650,
                                      "name": "retval",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4634,
                                      "src": "5621:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 4651,
                                      "name": "ERC1155_BATCH_RECEIVED_VALUE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4293,
                                      "src": "5631:28:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "5621:38:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "45524331313535235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745",
                                    "id": 4653,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5661:65:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_d01e89a9585e3758ec71f0b758b0e5a5f1316bddeb547d3737010dd4a5578f32",
                                      "typeString": "literal_string \"ERC1155#_callonERC1155BatchReceived: INVALID_ON_RECEIVE_MESSAGE\""
                                    },
                                    "value": "ERC1155#_callonERC1155BatchReceived: INVALID_ON_RECEIVE_MESSAGE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_d01e89a9585e3758ec71f0b758b0e5a5f1316bddeb547d3737010dd4a5578f32",
                                      "typeString": "literal_string \"ERC1155#_callonERC1155BatchReceived: INVALID_ON_RECEIVE_MESSAGE\""
                                    }
                                  ],
                                  "id": 4649,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5613:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 4654,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5613:114:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4655,
                              "nodeType": "ExpressionStatement",
                              "src": "5613:114:21"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4613,
                    "nodeType": "StructuredDocumentation",
                    "src": "5126:106:21",
                    "text": " @notice Verifies if receiver is contract and if so, calls (_to).onERC1155BatchReceived(...)"
                  },
                  "id": 4659,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callonERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4628,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4615,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4659,
                        "src": "5272:13:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4614,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5272:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4617,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4659,
                        "src": "5287:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4616,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5287:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4620,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4659,
                        "src": "5300:21:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4618,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5300:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4619,
                          "nodeType": "ArrayTypeName",
                          "src": "5300:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4623,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 4659,
                        "src": "5323:25:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4621,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5323:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4622,
                          "nodeType": "ArrayTypeName",
                          "src": "5323:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4625,
                        "mutability": "mutable",
                        "name": "_gasLimit",
                        "nodeType": "VariableDeclaration",
                        "scope": 4659,
                        "src": "5350:17:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4624,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5350:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4627,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4659,
                        "src": "5369:18:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4626,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5369:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5271:117:21"
                  },
                  "returnParameters": {
                    "id": 4629,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5404:0:21"
                  },
                  "scope": 4812,
                  "src": "5235:503:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3864
                  ],
                  "body": {
                    "id": 4684,
                    "nodeType": "Block",
                    "src": "6221:144:21",
                    "statements": [
                      {
                        "expression": {
                          "id": 4675,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 4668,
                                "name": "operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4305,
                                "src": "6257:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 4672,
                              "indexExpression": {
                                "expression": {
                                  "id": 4669,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "6267:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 4670,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "6267:10:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6257:21:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 4673,
                            "indexExpression": {
                              "id": 4671,
                              "name": "_operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4662,
                              "src": "6279:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6257:32:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 4674,
                            "name": "_approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4664,
                            "src": "6292:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6257:44:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4676,
                        "nodeType": "ExpressionStatement",
                        "src": "6257:44:21"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 4678,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6327:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4679,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "6327:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 4680,
                              "name": "_operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4662,
                              "src": "6339:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4681,
                              "name": "_approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4664,
                              "src": "6350:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 4677,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3803,
                            "src": "6312:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 4682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6312:48:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4683,
                        "nodeType": "EmitStatement",
                        "src": "6307:53:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4660,
                    "nodeType": "StructuredDocumentation",
                    "src": "5864:268:21",
                    "text": " @notice Enable or disable approval for a third party (\"operator\") to manage all of caller's tokens\n @param _operator  Address to add to the set of authorized operators\n @param _approved  True if the operator is approved, false to revoke approval"
                  },
                  "functionSelector": "a22cb465",
                  "id": 4685,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4666,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6210:8:21"
                  },
                  "parameters": {
                    "id": 4665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4662,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4685,
                        "src": "6162:17:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4661,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6162:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4664,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 4685,
                        "src": "6181:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4663,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6181:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6161:35:21"
                  },
                  "returnParameters": {
                    "id": 4667,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6221:0:21"
                  },
                  "scope": 4812,
                  "src": "6135:230:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3874
                  ],
                  "body": {
                    "id": 4702,
                    "nodeType": "Block",
                    "src": "6741:46:21",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 4696,
                              "name": "operators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4305,
                              "src": "6754:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 4698,
                            "indexExpression": {
                              "id": 4697,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4688,
                              "src": "6764:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6754:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 4700,
                          "indexExpression": {
                            "id": 4699,
                            "name": "_operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4690,
                            "src": "6772:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6754:28:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4695,
                        "id": 4701,
                        "nodeType": "Return",
                        "src": "6747:35:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4686,
                    "nodeType": "StructuredDocumentation",
                    "src": "6369:255:21",
                    "text": " @notice Queries the approval status of an operator for a given owner\n @param _owner     The owner of the Tokens\n @param _operator  Address of authorized operator\n @return isOperator True if the operator is approved, false if not"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 4703,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4692,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "6699:8:21"
                  },
                  "parameters": {
                    "id": 4691,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4688,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 4703,
                        "src": "6653:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4687,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6653:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4690,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4703,
                        "src": "6669:17:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4689,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6669:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6652:35:21"
                  },
                  "returnParameters": {
                    "id": 4695,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4694,
                        "mutability": "mutable",
                        "name": "isOperator",
                        "nodeType": "VariableDeclaration",
                        "scope": 4703,
                        "src": "6722:15:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4693,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6722:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6721:17:21"
                  },
                  "scope": 4812,
                  "src": "6627:160:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3843
                  ],
                  "body": {
                    "id": 4720,
                    "nodeType": "Block",
                    "src": "7220:39:21",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 4714,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4299,
                              "src": "7233:8:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(uint256 => uint256))"
                              }
                            },
                            "id": 4716,
                            "indexExpression": {
                              "id": 4715,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4706,
                              "src": "7242:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7233:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 4718,
                          "indexExpression": {
                            "id": 4717,
                            "name": "_id",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4708,
                            "src": "7250:3:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "7233:21:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 4713,
                        "id": 4719,
                        "nodeType": "Return",
                        "src": "7226:28:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4704,
                    "nodeType": "StructuredDocumentation",
                    "src": "6913:211:21",
                    "text": " @notice Get the balance of an account's Tokens\n @param _owner  The address of the token holder\n @param _id     ID of the Token\n @return The _owner's balance of the Token type requested"
                  },
                  "functionSelector": "00fdd58e",
                  "id": 4721,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4710,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7186:8:21"
                  },
                  "parameters": {
                    "id": 4709,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4706,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 4721,
                        "src": "7146:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4705,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7146:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4708,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4721,
                        "src": "7162:11:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4707,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7162:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7145:29:21"
                  },
                  "returnParameters": {
                    "id": 4713,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4712,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4721,
                        "src": "7209:7:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4711,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7209:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7208:9:21"
                  },
                  "scope": 4812,
                  "src": "7127:132:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3856
                  ],
                  "body": {
                    "id": 4785,
                    "nodeType": "Block",
                    "src": "7666:368:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4740,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4736,
                                  "name": "_owners",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4725,
                                  "src": "7680:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4737,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "7680:14:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 4738,
                                  "name": "_ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4728,
                                  "src": "7698:4:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 4739,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "7698:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7680:29:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135352362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e475448",
                              "id": 4741,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7711:46:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a4238933bea90e19d8a4b6d3db87260a7b7b62f1d27625f892fb051d61a85b44",
                                "typeString": "literal_string \"ERC1155#balanceOfBatch: INVALID_ARRAY_LENGTH\""
                              },
                              "value": "ERC1155#balanceOfBatch: INVALID_ARRAY_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a4238933bea90e19d8a4b6d3db87260a7b7b62f1d27625f892fb051d61a85b44",
                                "typeString": "literal_string \"ERC1155#balanceOfBatch: INVALID_ARRAY_LENGTH\""
                              }
                            ],
                            "id": 4735,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "7672:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7672:86:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4743,
                        "nodeType": "ExpressionStatement",
                        "src": "7672:86:21"
                      },
                      {
                        "assignments": [
                          4748
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4748,
                            "mutability": "mutable",
                            "name": "batchBalances",
                            "nodeType": "VariableDeclaration",
                            "scope": 4785,
                            "src": "7782:30:21",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 4746,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7782:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4747,
                              "nodeType": "ArrayTypeName",
                              "src": "7782:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4755,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 4752,
                                "name": "_owners",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4725,
                                "src": "7829:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 4753,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "7829:14:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4751,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "7815:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 4749,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7819:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4750,
                              "nodeType": "ArrayTypeName",
                              "src": "7819:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 4754,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7815:29:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7782:62:21"
                      },
                      {
                        "body": {
                          "id": 4781,
                          "nodeType": "Block",
                          "src": "7940:63:21",
                          "statements": [
                            {
                              "expression": {
                                "id": 4779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 4767,
                                    "name": "batchBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4748,
                                    "src": "7948:13:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 4769,
                                  "indexExpression": {
                                    "id": 4768,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4757,
                                    "src": "7962:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7948:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 4770,
                                      "name": "balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4299,
                                      "src": "7967:8:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => uint256))"
                                      }
                                    },
                                    "id": 4774,
                                    "indexExpression": {
                                      "baseExpression": {
                                        "id": 4771,
                                        "name": "_owners",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4725,
                                        "src": "7976:7:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                          "typeString": "address[] memory"
                                        }
                                      },
                                      "id": 4773,
                                      "indexExpression": {
                                        "id": 4772,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4757,
                                        "src": "7984:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7976:10:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7967:20:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 4778,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 4775,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4728,
                                      "src": "7988:4:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 4777,
                                    "indexExpression": {
                                      "id": 4776,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4757,
                                      "src": "7993:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7988:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7967:29:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7948:48:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4780,
                              "nodeType": "ExpressionStatement",
                              "src": "7948:48:21"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4763,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4760,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4757,
                            "src": "7915:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 4761,
                              "name": "_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4725,
                              "src": "7919:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 4762,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "7919:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7915:18:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4782,
                        "initializationExpression": {
                          "assignments": [
                            4757
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 4757,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 4782,
                              "src": "7900:9:21",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 4756,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "7900:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 4759,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 4758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7912:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "7900:13:21"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 4765,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "7935:3:21",
                            "subExpression": {
                              "id": 4764,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4757,
                              "src": "7935:1:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4766,
                          "nodeType": "ExpressionStatement",
                          "src": "7935:3:21"
                        },
                        "nodeType": "ForStatement",
                        "src": "7895:108:21"
                      },
                      {
                        "expression": {
                          "id": 4783,
                          "name": "batchBalances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4748,
                          "src": "8016:13:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 4734,
                        "id": 4784,
                        "nodeType": "Return",
                        "src": "8009:20:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4722,
                    "nodeType": "StructuredDocumentation",
                    "src": "7263:273:21",
                    "text": " @notice Get the balance of multiple account/token pairs\n @param _owners The addresses of the token holders\n @param _ids    ID of the Tokens\n @return        The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair)"
                  },
                  "functionSelector": "4e1273f4",
                  "id": 4786,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4730,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "7623:8:21"
                  },
                  "parameters": {
                    "id": 4729,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4725,
                        "mutability": "mutable",
                        "name": "_owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 4786,
                        "src": "7563:24:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4723,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7563:7:21",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 4724,
                          "nodeType": "ArrayTypeName",
                          "src": "7563:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4728,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 4786,
                        "src": "7589:21:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4726,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7589:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4727,
                          "nodeType": "ArrayTypeName",
                          "src": "7589:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7562:49:21"
                  },
                  "returnParameters": {
                    "id": 4734,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4733,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4786,
                        "src": "7646:16:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4731,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7646:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4732,
                          "nodeType": "ArrayTypeName",
                          "src": "7646:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7645:18:21"
                  },
                  "scope": 4812,
                  "src": "7539:495:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7228
                  ],
                  "body": {
                    "id": 4810,
                    "nodeType": "Block",
                    "src": "8463:134:21",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 4800,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4795,
                            "name": "_interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4789,
                            "src": "8473:12:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 4797,
                                  "name": "IERC1155",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3875,
                                  "src": "8494:8:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                ],
                                "id": 4796,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "8489:4:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 4798,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8489:14:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$3875",
                                "typeString": "type(contract IERC1155)"
                              }
                            },
                            "id": 4799,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "interfaceId",
                            "nodeType": "MemberAccess",
                            "src": "8489:26:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "8473:42:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4804,
                        "nodeType": "IfStatement",
                        "src": "8469:74:21",
                        "trueBody": {
                          "id": 4803,
                          "nodeType": "Block",
                          "src": "8517:26:21",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "74727565",
                                "id": 4801,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8532:4:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 4794,
                              "id": 4802,
                              "nodeType": "Return",
                              "src": "8525:11:21"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4807,
                              "name": "_interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4789,
                              "src": "8579:12:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 4805,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "8555:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155_$4812",
                                "typeString": "contract super ERC1155"
                              }
                            },
                            "id": 4806,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7228,
                            "src": "8555:23:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) pure returns (bool)"
                            }
                          },
                          "id": 4808,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8555:37:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 4794,
                        "id": 4809,
                        "nodeType": "Return",
                        "src": "8548:44:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4787,
                    "nodeType": "StructuredDocumentation",
                    "src": "8160:208:21",
                    "text": " @notice Query if a contract implements an interface\n @param _interfaceID  The interface identifier, as specified in ERC-165\n @return `true` if the contract implements `_interfaceID` and"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 4811,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 4791,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8426:8:21"
                  },
                  "parameters": {
                    "id": 4790,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4789,
                        "mutability": "mutable",
                        "name": "_interfaceID",
                        "nodeType": "VariableDeclaration",
                        "scope": 4811,
                        "src": "8398:19:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 4788,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "8398:6:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8397:21:21"
                  },
                  "returnParameters": {
                    "id": 4794,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4793,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 4811,
                        "src": "8457:4:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4792,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8457:4:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8456:6:21"
                  },
                  "scope": 4812,
                  "src": "8371:226:21",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 4813,
              "src": "324:8275:21"
            }
          ],
          "src": "39:8561:21"
        },
        "id": 21
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155Meta.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155Meta.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155": [
              4812
            ],
            "ERC1155Meta": [
              5439
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "IERC1271Wallet": [
              3953
            ],
            "IERC20": [
              4035
            ],
            "LibBytes": [
              7292
            ],
            "LibEIP712": [
              7328
            ],
            "SafeMath": [
              7467
            ],
            "SignatureValidator": [
              7731
            ]
          },
          "id": 5440,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4814,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:22"
            },
            {
              "id": 4815,
              "literals": [
                "experimental",
                "ABIEncoderV2"
              ],
              "nodeType": "PragmaDirective",
              "src": "62:33:22"
            },
            {
              "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155.sol",
              "file": "./ERC1155.sol",
              "id": 4816,
              "nodeType": "ImportDirective",
              "scope": 5440,
              "sourceUnit": 4813,
              "src": "97:23:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC20.sol",
              "file": "../../interfaces/IERC20.sol",
              "id": 4817,
              "nodeType": "ImportDirective",
              "scope": 5440,
              "sourceUnit": 4036,
              "src": "121:37:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155.sol",
              "file": "../../interfaces/IERC1155.sol",
              "id": 4818,
              "nodeType": "ImportDirective",
              "scope": 5440,
              "sourceUnit": 3876,
              "src": "159:39:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/LibBytes.sol",
              "file": "../../utils/LibBytes.sol",
              "id": 4819,
              "nodeType": "ImportDirective",
              "scope": 5440,
              "sourceUnit": 7293,
              "src": "199:34:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/SignatureValidator.sol",
              "file": "../../utils/SignatureValidator.sol",
              "id": 4820,
              "nodeType": "ImportDirective",
              "scope": 5440,
              "sourceUnit": 7732,
              "src": "234:44:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4822,
                    "name": "ERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4812,
                    "src": "497:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155_$4812",
                      "typeString": "contract ERC1155"
                    }
                  },
                  "id": 4823,
                  "nodeType": "InheritanceSpecifier",
                  "src": "497:7:22"
                },
                {
                  "baseName": {
                    "id": 4824,
                    "name": "SignatureValidator",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7731,
                    "src": "506:18:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SignatureValidator_$7731",
                      "typeString": "contract SignatureValidator"
                    }
                  },
                  "id": 4825,
                  "nodeType": "InheritanceSpecifier",
                  "src": "506:18:22"
                }
              ],
              "contractDependencies": [
                3875,
                4812,
                7229,
                7328,
                7731
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 4821,
                "nodeType": "StructuredDocumentation",
                "src": "281:191:22",
                "text": " @dev ERC-1155 with native metatransaction methods. These additional functions allow users\n      to presign function calls and allow third parties to execute these on their behalf"
              },
              "fullyImplemented": true,
              "id": 5439,
              "linearizedBaseContracts": [
                5439,
                7731,
                7328,
                4812,
                7229,
                3875
              ],
              "name": "ERC1155Meta",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 4828,
                  "libraryName": {
                    "id": 4826,
                    "name": "LibBytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7292,
                    "src": "535:8:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LibBytes_$7292",
                      "typeString": "library LibBytes"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "529:25:22",
                  "typeName": {
                    "id": 4827,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "548:5:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "canonicalName": "ERC1155Meta.GasReceipt",
                  "id": 4837,
                  "members": [
                    {
                      "constant": false,
                      "id": 4830,
                      "mutability": "mutable",
                      "name": "gasFee",
                      "nodeType": "VariableDeclaration",
                      "scope": 4837,
                      "src": "971:14:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4829,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "971:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4832,
                      "mutability": "mutable",
                      "name": "gasLimitCallback",
                      "nodeType": "VariableDeclaration",
                      "scope": 4837,
                      "src": "1026:24:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4831,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1026:7:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4834,
                      "mutability": "mutable",
                      "name": "feeRecipient",
                      "nodeType": "VariableDeclaration",
                      "scope": 4837,
                      "src": "1124:20:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4833,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1124:7:22",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4836,
                      "mutability": "mutable",
                      "name": "feeTokenData",
                      "nodeType": "VariableDeclaration",
                      "scope": 4837,
                      "src": "1184:18:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 4835,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1184:5:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "GasReceipt",
                  "nodeType": "StructDefinition",
                  "scope": 5439,
                  "src": "947:299:22",
                  "visibility": "public"
                },
                {
                  "canonicalName": "ERC1155Meta.FeeTokenType",
                  "id": 4841,
                  "members": [
                    {
                      "id": 4838,
                      "name": "ERC1155",
                      "nodeType": "EnumValue",
                      "src": "1323:7:22"
                    },
                    {
                      "id": 4839,
                      "name": "ERC20",
                      "nodeType": "EnumValue",
                      "src": "1373:5:22"
                    },
                    {
                      "id": 4840,
                      "name": "NTypes",
                      "nodeType": "EnumValue",
                      "src": "1411:6:22"
                    }
                  ],
                  "name": "FeeTokenType",
                  "nodeType": "EnumDefinition",
                  "src": "1299:184:22"
                },
                {
                  "constant": false,
                  "id": 4845,
                  "mutability": "mutable",
                  "name": "nonces",
                  "nodeType": "VariableDeclaration",
                  "scope": 5439,
                  "src": "1520:44:22",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 4844,
                    "keyType": {
                      "id": 4842,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1529:7:22",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1520:28:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 4843,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1540:7:22",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "anonymous": false,
                  "id": 4851,
                  "name": "NonceChange",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 4850,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4847,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "signer",
                        "nodeType": "VariableDeclaration",
                        "scope": 4851,
                        "src": "1709:22:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4846,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1709:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4849,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newNonce",
                        "nodeType": "VariableDeclaration",
                        "scope": 4851,
                        "src": "1733:16:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4848,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1733:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1708:42:22"
                  },
                  "src": "1691:60:22"
                },
                {
                  "body": {
                    "id": 4957,
                    "nodeType": "Block",
                    "src": "2792:1421:22",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4873,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4868,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4856,
                                "src": "2806:3:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 4871,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2821:1:22",
                                    "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": 4870,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2813:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4869,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2813:7:22",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4872,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2813:10:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2806:17:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135354d657461236d657461536166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54",
                              "id": 4874,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2825:53:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_61f5777e4201d0cacc6b01e4df7af612fe611d3e31e7f11d609bf3a8c318735e",
                                "typeString": "literal_string \"ERC1155Meta#metaSafeTransferFrom: INVALID_RECIPIENT\""
                              },
                              "value": "ERC1155Meta#metaSafeTransferFrom: INVALID_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_61f5777e4201d0cacc6b01e4df7af612fe611d3e31e7f11d609bf3a8c318735e",
                                "typeString": "literal_string \"ERC1155Meta#metaSafeTransferFrom: INVALID_RECIPIENT\""
                              }
                            ],
                            "id": 4867,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2798:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4875,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2798:81:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4876,
                        "nodeType": "ExpressionStatement",
                        "src": "2798:81:22"
                      },
                      {
                        "assignments": [
                          4878
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4878,
                            "mutability": "mutable",
                            "name": "transferData",
                            "nodeType": "VariableDeclaration",
                            "scope": 4957,
                            "src": "2906:25:22",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4877,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2906:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4879,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2906:25:22"
                      },
                      {
                        "assignments": [
                          4881
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4881,
                            "mutability": "mutable",
                            "name": "gasReceipt",
                            "nodeType": "VariableDeclaration",
                            "scope": 4957,
                            "src": "2937:28:22",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                              "typeString": "struct ERC1155Meta.GasReceipt"
                            },
                            "typeName": {
                              "id": 4880,
                              "name": "GasReceipt",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4837,
                              "src": "2937:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_GasReceipt_$4837_storage_ptr",
                                "typeString": "struct ERC1155Meta.GasReceipt"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4882,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2937:28:22"
                      },
                      {
                        "assignments": [
                          4884
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4884,
                            "mutability": "mutable",
                            "name": "signedData",
                            "nodeType": "VariableDeclaration",
                            "scope": 4957,
                            "src": "3024:23:22",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4883,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "3024:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4907,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4886,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4854,
                              "src": "3078:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4887,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4864,
                              "src": "3091:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 4890,
                                  "name": "META_TX_TYPEHASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5159,
                                  "src": "3124:16:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 4891,
                                  "name": "_from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4854,
                                  "src": "3150:5:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4892,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4856,
                                  "src": "3187:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 4893,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4858,
                                  "src": "3224:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 4894,
                                  "name": "_amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4860,
                                  "src": "3237:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "condition": {
                                    "id": 4895,
                                    "name": "_isGasFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4862,
                                    "src": "3254:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 4902,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3287:1:22",
                                        "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": 4901,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3279:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 4900,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3279:7:22",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4903,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3279:10:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4904,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "3254:35:22",
                                  "trueExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 4898,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3274:1:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 4897,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3266:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 4896,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3266:7:22",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4899,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3266:10:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 4888,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "3104:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "3104:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 4905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3104:216:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4885,
                            "name": "_signatureValidation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5278,
                            "src": "3050:20:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,bytes memory) returns (bytes memory)"
                            }
                          },
                          "id": 4906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3050:276:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3024:302:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4909,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4854,
                              "src": "3373:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4910,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4856,
                              "src": "3380:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4911,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4858,
                              "src": "3385:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4912,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4860,
                              "src": "3390:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4908,
                            "name": "_safeTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4475,
                            "src": "3355:17:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 4913,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3355:43:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4914,
                        "nodeType": "ExpressionStatement",
                        "src": "3355:43:22"
                      },
                      {
                        "condition": {
                          "id": 4915,
                          "name": "_isGasFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4862,
                          "src": "3443:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4955,
                          "nodeType": "Block",
                          "src": "4123:86:22",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4946,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4854,
                                    "src": "4154:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4947,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4856,
                                    "src": "4161:3:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4948,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4858,
                                    "src": "4166:3:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4949,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4860,
                                    "src": "4171:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 4950,
                                      "name": "gasleft",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -7,
                                      "src": "4180:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                        "typeString": "function () view returns (uint256)"
                                      }
                                    },
                                    "id": 4951,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4180:9:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4952,
                                    "name": "signedData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4884,
                                    "src": "4191:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 4945,
                                  "name": "_callonERC1155Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4520,
                                  "src": "4131:22:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 4953,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4131:71:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4954,
                              "nodeType": "ExpressionStatement",
                              "src": "4131:71:22"
                            }
                          ]
                        },
                        "id": 4956,
                        "nodeType": "IfStatement",
                        "src": "3439:770:22",
                        "trueBody": {
                          "id": 4944,
                          "nodeType": "Block",
                          "src": "3454:663:22",
                          "statements": [
                            {
                              "expression": {
                                "id": 4927,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 4916,
                                      "name": "gasReceipt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4881,
                                      "src": "3463:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                        "typeString": "struct ERC1155Meta.GasReceipt memory"
                                      }
                                    },
                                    {
                                      "id": 4917,
                                      "name": "transferData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4878,
                                      "src": "3475:12:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "id": 4918,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "3462:26:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_struct$_GasReceipt_$4837_memory_ptr_$_t_bytes_memory_ptr_$",
                                    "typeString": "tuple(struct ERC1155Meta.GasReceipt memory,bytes memory)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 4921,
                                      "name": "signedData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4884,
                                      "src": "3502:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "components": [
                                        {
                                          "id": 4922,
                                          "name": "GasReceipt",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4837,
                                          "src": "3515:10:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_struct$_GasReceipt_$4837_storage_ptr_$",
                                            "typeString": "type(struct ERC1155Meta.GasReceipt storage pointer)"
                                          }
                                        },
                                        {
                                          "id": 4924,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "3527:5:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 4923,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "3527:5:22",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "id": 4925,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "3514:19:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_type$_t_struct$_GasReceipt_$4837_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                        "typeString": "tuple(type(struct ERC1155Meta.GasReceipt storage pointer),type(bytes storage pointer))"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_tuple$_t_type$_t_struct$_GasReceipt_$4837_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                        "typeString": "tuple(type(struct ERC1155Meta.GasReceipt storage pointer),type(bytes storage pointer))"
                                      }
                                    ],
                                    "expression": {
                                      "id": 4919,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "3491:3:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 4920,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "decode",
                                    "nodeType": "MemberAccess",
                                    "src": "3491:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 4926,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3491:43:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_struct$_GasReceipt_$4837_memory_ptr_$_t_bytes_memory_ptr_$",
                                    "typeString": "tuple(struct ERC1155Meta.GasReceipt memory,bytes memory)"
                                  }
                                },
                                "src": "3462:72:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4928,
                              "nodeType": "ExpressionStatement",
                              "src": "3462:72:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4930,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4854,
                                    "src": "3971:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4931,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4856,
                                    "src": "3978:3:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4932,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4858,
                                    "src": "3983:3:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4933,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4860,
                                    "src": "3988:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 4934,
                                      "name": "gasReceipt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4881,
                                      "src": "3997:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                        "typeString": "struct ERC1155Meta.GasReceipt memory"
                                      }
                                    },
                                    "id": 4935,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "gasLimitCallback",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4832,
                                    "src": "3997:27:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4936,
                                    "name": "transferData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4878,
                                    "src": "4026:12:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 4929,
                                  "name": "_callonERC1155Received",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4520,
                                  "src": "3948:22:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256,uint256,uint256,bytes memory)"
                                  }
                                },
                                "id": 4937,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3948:91:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4938,
                              "nodeType": "ExpressionStatement",
                              "src": "3948:91:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4940,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4854,
                                    "src": "4091:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4941,
                                    "name": "gasReceipt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4881,
                                    "src": "4098:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                      "typeString": "struct ERC1155Meta.GasReceipt memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                      "typeString": "struct ERC1155Meta.GasReceipt memory"
                                    }
                                  ],
                                  "id": 4939,
                                  "name": "_transferGasFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5438,
                                  "src": "4075:15:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_GasReceipt_$4837_memory_ptr_$returns$__$",
                                    "typeString": "function (address,struct ERC1155Meta.GasReceipt memory)"
                                  }
                                },
                                "id": 4942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4075:34:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4943,
                              "nodeType": "ExpressionStatement",
                              "src": "4075:34:22"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4852,
                    "nodeType": "StructuredDocumentation",
                    "src": "1892:735:22",
                    "text": " @notice Allows anyone with a valid signature to transfer _amount amount of a token _id on the bahalf of _from\n @param _from     Source address\n @param _to       Target address\n @param _id       ID of the token type\n @param _amount   Transfered amount\n @param _isGasFee Whether gas is reimbursed to executor or not\n @param _data     Encodes a meta transfer indicator, signature, gas payment receipt and extra transfer data\n   _data should be encoded as (\n   (bytes32 r, bytes32 s, uint8 v, uint256 nonce, SignatureType sigType),\n   (GasReceipt g, ?bytes transferData)\n )\n   i.e. high level encoding should be (bytes, bytes), where the latter bytes array is a nested bytes array"
                  },
                  "functionSelector": "ce0b514b",
                  "id": 4958,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "metaSafeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4854,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 4958,
                        "src": "2665:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4853,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2665:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4856,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 4958,
                        "src": "2684:11:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4855,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2684:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4858,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 4958,
                        "src": "2701:11:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4857,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2701:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4860,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 4958,
                        "src": "2718:15:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4859,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2718:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4862,
                        "mutability": "mutable",
                        "name": "_isGasFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 4958,
                        "src": "2739:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4861,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2739:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4864,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 4958,
                        "src": "2759:18:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4863,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2759:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2659:119:22"
                  },
                  "returnParameters": {
                    "id": 4866,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2792:0:22"
                  },
                  "scope": 5439,
                  "src": "2630:1583:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5076,
                    "nodeType": "Block",
                    "src": "5157:1522:22",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 4982,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4977,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4963,
                                "src": "5171:3:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 4980,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5186:1:22",
                                    "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": 4979,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5178:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 4978,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5178:7:22",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 4981,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5178:10:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "5171:17:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135354d657461236d6574615361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54",
                              "id": 4983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5190:58:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c35c815541f857ca65052edde63901642b7e03e43bf83eec95218f874a8fdd62",
                                "typeString": "literal_string \"ERC1155Meta#metaSafeBatchTransferFrom: INVALID_RECIPIENT\""
                              },
                              "value": "ERC1155Meta#metaSafeBatchTransferFrom: INVALID_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c35c815541f857ca65052edde63901642b7e03e43bf83eec95218f874a8fdd62",
                                "typeString": "literal_string \"ERC1155Meta#metaSafeBatchTransferFrom: INVALID_RECIPIENT\""
                              }
                            ],
                            "id": 4976,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5163:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 4984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5163:86:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4985,
                        "nodeType": "ExpressionStatement",
                        "src": "5163:86:22"
                      },
                      {
                        "assignments": [
                          4987
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4987,
                            "mutability": "mutable",
                            "name": "transferData",
                            "nodeType": "VariableDeclaration",
                            "scope": 5076,
                            "src": "5276:25:22",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4986,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5276:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4988,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5276:25:22"
                      },
                      {
                        "assignments": [
                          4990
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4990,
                            "mutability": "mutable",
                            "name": "gasReceipt",
                            "nodeType": "VariableDeclaration",
                            "scope": 5076,
                            "src": "5307:28:22",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                              "typeString": "struct ERC1155Meta.GasReceipt"
                            },
                            "typeName": {
                              "id": 4989,
                              "name": "GasReceipt",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4837,
                              "src": "5307:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_GasReceipt_$4837_storage_ptr",
                                "typeString": "struct ERC1155Meta.GasReceipt"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4991,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5307:28:22"
                      },
                      {
                        "assignments": [
                          4993
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4993,
                            "mutability": "mutable",
                            "name": "signedData",
                            "nodeType": "VariableDeclaration",
                            "scope": 5076,
                            "src": "5394:23:22",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 4992,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5394:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5026,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4995,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4961,
                              "src": "5448:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 4996,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4973,
                              "src": "5461:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 4999,
                                  "name": "META_BATCH_TX_TYPEHASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5162,
                                  "src": "5494:22:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 5000,
                                  "name": "_from",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4961,
                                  "src": "5526:5:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5001,
                                  "name": "_to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4963,
                                  "src": "5563:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 5005,
                                          "name": "_ids",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4966,
                                          "src": "5627:4:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        ],
                                        "expression": {
                                          "id": 5003,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "5610:3:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 5004,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "src": "5610:16:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 5006,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5610:22:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 5002,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "5600:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 5007,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5600:33:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 5011,
                                          "name": "_amounts",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4969,
                                          "src": "5670:8:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        ],
                                        "expression": {
                                          "id": 5009,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "5653:3:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 5010,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "src": "5653:16:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 5012,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5653:26:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 5008,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "5643:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 5013,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5643:37:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "condition": {
                                    "id": 5014,
                                    "name": "_isGasFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4971,
                                    "src": "5690:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 5021,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5723:1:22",
                                        "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": 5020,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5715:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 5019,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5715:7:22",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5022,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5715:10:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "5690:35:22",
                                  "trueExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 5017,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5710:1:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 5016,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5702:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 5015,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5702:7:22",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5018,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5702:10:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 4997,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "5474:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 4998,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "5474:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5474:282:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4994,
                            "name": "_signatureValidation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5278,
                            "src": "5420:20:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,bytes memory) returns (bytes memory)"
                            }
                          },
                          "id": 5025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5420:342:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5394:368:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5028,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4961,
                              "src": "5815:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5029,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4963,
                              "src": "5822:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5030,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4966,
                              "src": "5827:4:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5031,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4969,
                              "src": "5833:8:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 5027,
                            "name": "_safeBatchTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4612,
                            "src": "5792:22:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 5032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5792:50:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5033,
                        "nodeType": "ExpressionStatement",
                        "src": "5792:50:22"
                      },
                      {
                        "condition": {
                          "id": 5034,
                          "name": "_isGasFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4971,
                          "src": "5888:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5074,
                          "nodeType": "Block",
                          "src": "6582:93:22",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5065,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4961,
                                    "src": "6618:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5066,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4963,
                                    "src": "6625:3:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5067,
                                    "name": "_ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4966,
                                    "src": "6630:4:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 5068,
                                    "name": "_amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4969,
                                    "src": "6636:8:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 5069,
                                      "name": "gasleft",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -7,
                                      "src": "6646:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                        "typeString": "function () view returns (uint256)"
                                      }
                                    },
                                    "id": 5070,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6646:9:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5071,
                                    "name": "signedData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4993,
                                    "src": "6657:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 5064,
                                  "name": "_callonERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4659,
                                  "src": "6590:27:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,uint256,bytes memory)"
                                  }
                                },
                                "id": 5072,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6590:78:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5073,
                              "nodeType": "ExpressionStatement",
                              "src": "6590:78:22"
                            }
                          ]
                        },
                        "id": 5075,
                        "nodeType": "IfStatement",
                        "src": "5884:791:22",
                        "trueBody": {
                          "id": 5063,
                          "nodeType": "Block",
                          "src": "5899:677:22",
                          "statements": [
                            {
                              "expression": {
                                "id": 5046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 5035,
                                      "name": "gasReceipt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4990,
                                      "src": "5908:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                        "typeString": "struct ERC1155Meta.GasReceipt memory"
                                      }
                                    },
                                    {
                                      "id": 5036,
                                      "name": "transferData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4987,
                                      "src": "5920:12:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "id": 5037,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "5907:26:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_struct$_GasReceipt_$4837_memory_ptr_$_t_bytes_memory_ptr_$",
                                    "typeString": "tuple(struct ERC1155Meta.GasReceipt memory,bytes memory)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 5040,
                                      "name": "signedData",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4993,
                                      "src": "5947:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "components": [
                                        {
                                          "id": 5041,
                                          "name": "GasReceipt",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4837,
                                          "src": "5960:10:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_struct$_GasReceipt_$4837_storage_ptr_$",
                                            "typeString": "type(struct ERC1155Meta.GasReceipt storage pointer)"
                                          }
                                        },
                                        {
                                          "id": 5043,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "5972:5:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                            "typeString": "type(bytes storage pointer)"
                                          },
                                          "typeName": {
                                            "id": 5042,
                                            "name": "bytes",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "5972:5:22",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "id": 5044,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "5959:19:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_type$_t_struct$_GasReceipt_$4837_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                        "typeString": "tuple(type(struct ERC1155Meta.GasReceipt storage pointer),type(bytes storage pointer))"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_tuple$_t_type$_t_struct$_GasReceipt_$4837_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                        "typeString": "tuple(type(struct ERC1155Meta.GasReceipt storage pointer),type(bytes storage pointer))"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5038,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "5936:3:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 5039,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "decode",
                                    "nodeType": "MemberAccess",
                                    "src": "5936:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 5045,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5936:43:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_struct$_GasReceipt_$4837_memory_ptr_$_t_bytes_memory_ptr_$",
                                    "typeString": "tuple(struct ERC1155Meta.GasReceipt memory,bytes memory)"
                                  }
                                },
                                "src": "5907:72:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5047,
                              "nodeType": "ExpressionStatement",
                              "src": "5907:72:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5049,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4961,
                                    "src": "6421:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5050,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4963,
                                    "src": "6428:3:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5051,
                                    "name": "_ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4966,
                                    "src": "6433:4:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 5052,
                                    "name": "_amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4969,
                                    "src": "6439:8:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 5053,
                                      "name": "gasReceipt",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4990,
                                      "src": "6449:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                        "typeString": "struct ERC1155Meta.GasReceipt memory"
                                      }
                                    },
                                    "id": 5054,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "gasLimitCallback",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4832,
                                    "src": "6449:27:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5055,
                                    "name": "transferData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4987,
                                    "src": "6478:12:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 5048,
                                  "name": "_callonERC1155BatchReceived",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4659,
                                  "src": "6393:27:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,uint256,bytes memory)"
                                  }
                                },
                                "id": 5056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6393:98:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5057,
                              "nodeType": "ExpressionStatement",
                              "src": "6393:98:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5059,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4961,
                                    "src": "6550:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5060,
                                    "name": "gasReceipt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4990,
                                    "src": "6557:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                      "typeString": "struct ERC1155Meta.GasReceipt memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                      "typeString": "struct ERC1155Meta.GasReceipt memory"
                                    }
                                  ],
                                  "id": 5058,
                                  "name": "_transferGasFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5438,
                                  "src": "6534:15:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_GasReceipt_$4837_memory_ptr_$returns$__$",
                                    "typeString": "function (address,struct ERC1155Meta.GasReceipt memory)"
                                  }
                                },
                                "id": 5061,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6534:34:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5062,
                              "nodeType": "ExpressionStatement",
                              "src": "6534:34:22"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4959,
                    "nodeType": "StructuredDocumentation",
                    "src": "4217:750:22",
                    "text": " @notice Allows anyone with a valid signature to transfer multiple types of tokens on the bahalf of _from\n @param _from     Source addresses\n @param _to       Target addresses\n @param _ids      IDs of each token type\n @param _amounts  Transfer amounts per token type\n @param _isGasFee Whether gas is reimbursed to executor or not\n @param _data     Encodes a meta transfer indicator, signature, gas payment receipt and extra transfer data\n   _data should be encoded as (\n   (bytes32 r, bytes32 s, uint8 v, uint256 nonce, SignatureType sigType),\n   (GasReceipt g, ?bytes transferData)\n )\n   i.e. high level encoding should be (bytes, bytes), where the latter bytes array is a nested bytes array"
                  },
                  "functionSelector": "a3d4926e",
                  "id": 5077,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "metaSafeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4974,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4961,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5077,
                        "src": "5010:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4960,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5010:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4963,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5077,
                        "src": "5029:11:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4962,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5029:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4966,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 5077,
                        "src": "5046:21:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4964,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5046:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4965,
                          "nodeType": "ArrayTypeName",
                          "src": "5046:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4969,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 5077,
                        "src": "5073:25:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4967,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5073:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4968,
                          "nodeType": "ArrayTypeName",
                          "src": "5073:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4971,
                        "mutability": "mutable",
                        "name": "_isGasFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 5077,
                        "src": "5104:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4970,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5104:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4973,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5077,
                        "src": "5124:18:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4972,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5124:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5004:139:22"
                  },
                  "returnParameters": {
                    "id": 4975,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5157:0:22"
                  },
                  "scope": 5439,
                  "src": "4970:1709:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5155,
                    "nodeType": "Block",
                    "src": "7705:798:22",
                    "statements": [
                      {
                        "assignments": [
                          5092
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5092,
                            "mutability": "mutable",
                            "name": "signedData",
                            "nodeType": "VariableDeclaration",
                            "scope": 5155,
                            "src": "7763:23:22",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 5091,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7763:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5123,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5094,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5080,
                              "src": "7817:6:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5095,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5088,
                              "src": "7831:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "id": 5098,
                                  "name": "META_APPROVAL_TYPEHASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5165,
                                  "src": "7864:22:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 5099,
                                  "name": "_owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5080,
                                  "src": "7896:6:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5100,
                                  "name": "_operator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5082,
                                  "src": "7963:9:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "condition": {
                                    "id": 5101,
                                    "name": "_approved",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5084,
                                    "src": "8030:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 5108,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8063:1:22",
                                        "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": 5107,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8055:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 5106,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8055:7:22",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5109,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8055:10:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5110,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "8030:35:22",
                                  "trueExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 5104,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8050:1:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 5103,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8042:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 5102,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8042:7:22",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5105,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8042:10:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "condition": {
                                    "id": 5111,
                                    "name": "_isGasFee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5086,
                                    "src": "8097:9:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 5118,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8130:1:22",
                                        "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": 5117,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8122:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 5116,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8122:7:22",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5119,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8122:10:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5120,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "8097:35:22",
                                  "trueExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 5114,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "8117:1:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 5113,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "8109:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 5112,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "8109:7:22",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 5115,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "8109:10:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 5096,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "7844:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5097,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "7844:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5121,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7844:319:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5093,
                            "name": "_signatureValidation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5278,
                            "src": "7789:20:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (address,bytes memory,bytes memory) returns (bytes memory)"
                            }
                          },
                          "id": 5122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7789:380:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7763:406:22"
                      },
                      {
                        "expression": {
                          "id": 5130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 5124,
                                "name": "operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4305,
                                "src": "8206:9:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 5127,
                              "indexExpression": {
                                "id": 5125,
                                "name": "_owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5080,
                                "src": "8216:6:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8206:17:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 5128,
                            "indexExpression": {
                              "id": 5126,
                              "name": "_operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5082,
                              "src": "8224:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8206:28:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5129,
                            "name": "_approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5084,
                            "src": "8237:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8206:40:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5131,
                        "nodeType": "ExpressionStatement",
                        "src": "8206:40:22"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 5133,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5080,
                              "src": "8291:6:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5134,
                              "name": "_operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5082,
                              "src": "8299:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5135,
                              "name": "_approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5084,
                              "src": "8310:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 5132,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3803,
                            "src": "8276:14:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 5136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8276:44:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5137,
                        "nodeType": "EmitStatement",
                        "src": "8271:49:22"
                      },
                      {
                        "condition": {
                          "id": 5138,
                          "name": "_isGasFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5086,
                          "src": "8363:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5154,
                        "nodeType": "IfStatement",
                        "src": "8359:140:22",
                        "trueBody": {
                          "id": 5153,
                          "nodeType": "Block",
                          "src": "8374:125:22",
                          "statements": [
                            {
                              "assignments": [
                                5140
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5140,
                                  "mutability": "mutable",
                                  "name": "gasReceipt",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5153,
                                  "src": "8382:28:22",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                    "typeString": "struct ERC1155Meta.GasReceipt"
                                  },
                                  "typeName": {
                                    "id": 5139,
                                    "name": "GasReceipt",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 4837,
                                    "src": "8382:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_GasReceipt_$4837_storage_ptr",
                                      "typeString": "struct ERC1155Meta.GasReceipt"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5147,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 5143,
                                    "name": "signedData",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5092,
                                    "src": "8424:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "components": [
                                      {
                                        "id": 5144,
                                        "name": "GasReceipt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4837,
                                        "src": "8437:10:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_struct$_GasReceipt_$4837_storage_ptr_$",
                                          "typeString": "type(struct ERC1155Meta.GasReceipt storage pointer)"
                                        }
                                      }
                                    ],
                                    "id": 5145,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "8436:12:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_struct$_GasReceipt_$4837_storage_ptr_$",
                                      "typeString": "type(struct ERC1155Meta.GasReceipt storage pointer)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_type$_t_struct$_GasReceipt_$4837_storage_ptr_$",
                                      "typeString": "type(struct ERC1155Meta.GasReceipt storage pointer)"
                                    }
                                  ],
                                  "expression": {
                                    "id": 5141,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "8413:3:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 5142,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "decode",
                                  "nodeType": "MemberAccess",
                                  "src": "8413:10:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 5146,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8413:36:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                  "typeString": "struct ERC1155Meta.GasReceipt memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8382:67:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 5149,
                                    "name": "_owner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5080,
                                    "src": "8473:6:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 5150,
                                    "name": "gasReceipt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5140,
                                    "src": "8481:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                      "typeString": "struct ERC1155Meta.GasReceipt memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                      "typeString": "struct ERC1155Meta.GasReceipt memory"
                                    }
                                  ],
                                  "id": 5148,
                                  "name": "_transferGasFee",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5438,
                                  "src": "8457:15:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_GasReceipt_$4837_memory_ptr_$returns$__$",
                                    "typeString": "function (address,struct ERC1155Meta.GasReceipt memory)"
                                  }
                                },
                                "id": 5151,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8457:35:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5152,
                              "nodeType": "ExpressionStatement",
                              "src": "8457:35:22"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5078,
                    "nodeType": "StructuredDocumentation",
                    "src": "6805:745:22",
                    "text": " @notice Approve the passed address to spend on behalf of _from if valid signature is provided\n @param _owner     Address that wants to set operator status  _spender\n @param _operator  Address to add to the set of authorized operators\n @param _approved  True if the operator is approved, false to revoke approval\n @param _isGasFee  Whether gas will be reimbursed or not, with vlid signature\n @param _data      Encodes signature and gas payment receipt\n   _data should be encoded as (\n     (bytes32 r, bytes32 s, uint8 v, uint256 nonce, SignatureType sigType),\n     (GasReceipt g)\n   )\n   i.e. high level encoding should be (bytes, bytes), where the latter bytes array is a nested bytes array"
                  },
                  "functionSelector": "f5d4c820",
                  "id": 5156,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "metaSetApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5089,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5080,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 5156,
                        "src": "7589:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5079,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7589:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5082,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 5156,
                        "src": "7609:17:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5081,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7609:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5084,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 5156,
                        "src": "7632:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5083,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7632:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5086,
                        "mutability": "mutable",
                        "name": "_isGasFee",
                        "nodeType": "VariableDeclaration",
                        "scope": 5156,
                        "src": "7652:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5085,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7652:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5088,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5156,
                        "src": "7672:18:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5087,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7672:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7583:108:22"
                  },
                  "returnParameters": {
                    "id": 5090,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7705:0:22"
                  },
                  "scope": 5439,
                  "src": "7553:950:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "constant": true,
                  "id": 5159,
                  "mutability": "constant",
                  "name": "META_TX_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "scope": 5439,
                  "src": "8743:111:22",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5157,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8743:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307863653062353134623339333162646265346435643434653466303335616665373131333736376237646237313934393237316636613632643963363066353538",
                    "id": 5158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "8788:66:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_93196443195338791266266567088459136498039177097425431826541783163204926502232_by_1",
                      "typeString": "int_const 9319...(69 digits omitted)...2232"
                    },
                    "value": "0xce0b514b3931bdbe4d5d44e4f035afe7113767b7db71949271f6a62d9c60f558"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 5162,
                  "mutability": "constant",
                  "name": "META_BATCH_TX_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "scope": 5439,
                  "src": "8966:117:22",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5160,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8966:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307861336434393236653863663866653865303230636432396635313463323536626332656563363261613233333765343135663161333361343832386166356130",
                    "id": 5161,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9017:66:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_74102576532212354761420717221780610133727480174945536044725316274056692692384_by_1",
                      "typeString": "int_const 7410...(69 digits omitted)...2384"
                    },
                    "value": "0xa3d4926e8cf8fe8e020cd29f514c256bc2eec62aa2337e415f1a33a4828af5a0"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 5165,
                  "mutability": "constant",
                  "name": "META_APPROVAL_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "scope": 5439,
                  "src": "9176:117:22",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5163,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9176:7:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307866356434633832303439346338353935646532373463376666363139626561643338616163346662633364313433623562663935366161346238346661353234",
                    "id": 5164,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "9227:66:22",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_111192600700340210632803049500369375094225397075716778154023465828724870456612_by_1",
                      "typeString": "int_const 1111...(70 digits omitted)...6612"
                    },
                    "value": "0xf5d4c820494c8595de274c7ff619bead38aac4fbc3d143b5bf956aa4b84fa524"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5277,
                    "nodeType": "Block",
                    "src": "10120:1085:22",
                    "statements": [
                      {
                        "assignments": [
                          5178
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5178,
                            "mutability": "mutable",
                            "name": "sig",
                            "nodeType": "VariableDeclaration",
                            "scope": 5277,
                            "src": "10126:16:22",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 5177,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "10126:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5179,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10126:16:22"
                      },
                      {
                        "expression": {
                          "id": 5192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 5180,
                                "name": "sig",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5178,
                                "src": "10188:3:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "id": 5181,
                                "name": "signedData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5175,
                                "src": "10193:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "id": 5182,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "10187:17:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bytes memory,bytes memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5185,
                                "name": "_sigData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5170,
                                "src": "10218:8:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "components": [
                                  {
                                    "id": 5187,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10229:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 5186,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10229:5:22",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  {
                                    "id": 5189,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10236:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                      "typeString": "type(bytes storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 5188,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10236:5:22",
                                      "typeDescriptions": {}
                                    }
                                  }
                                ],
                                "id": 5190,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10228:14:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                  "typeString": "tuple(type(bytes storage pointer),type(bytes storage pointer))"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_tuple$_t_type$_t_bytes_storage_ptr_$_$_t_type$_t_bytes_storage_ptr_$_$",
                                  "typeString": "tuple(type(bytes storage pointer),type(bytes storage pointer))"
                                }
                              ],
                              "expression": {
                                "id": 5183,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "10207:3:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 5184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "src": "10207:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 5191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10207:36:22",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$",
                              "typeString": "tuple(bytes memory,bytes memory)"
                            }
                          },
                          "src": "10187:56:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5193,
                        "nodeType": "ExpressionStatement",
                        "src": "10187:56:22"
                      },
                      {
                        "assignments": [
                          5195
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5195,
                            "mutability": "mutable",
                            "name": "currentNonce",
                            "nodeType": "VariableDeclaration",
                            "scope": 5277,
                            "src": "10304:20:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5194,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10304:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5199,
                        "initialValue": {
                          "baseExpression": {
                            "id": 5196,
                            "name": "nonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4845,
                            "src": "10327:6:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 5198,
                          "indexExpression": {
                            "id": 5197,
                            "name": "_signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5168,
                            "src": "10334:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10327:15:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10304:38:22"
                      },
                      {
                        "assignments": [
                          5201
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5201,
                            "mutability": "mutable",
                            "name": "nonce",
                            "nodeType": "VariableDeclaration",
                            "scope": 5277,
                            "src": "10388:13:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5200,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10388:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5209,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "3635",
                                  "id": 5206,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10428:2:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_65_by_1",
                                    "typeString": "int_const 65"
                                  },
                                  "value": "65"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_65_by_1",
                                    "typeString": "int_const 65"
                                  }
                                ],
                                "expression": {
                                  "id": 5204,
                                  "name": "sig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5178,
                                  "src": "10412:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 5205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "readBytes32",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7291,
                                "src": "10412:15:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                }
                              },
                              "id": 5207,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10412:19:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5203,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10404:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 5202,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10404:7:22",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10404:28:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10388:44:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 5222,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5213,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5211,
                                      "name": "nonce",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5201,
                                      "src": "10528:5:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 5212,
                                      "name": "currentNonce",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5195,
                                      "src": "10537:12:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10528:21:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 5214,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10527:23:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5220,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5215,
                                      "name": "nonce",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5201,
                                      "src": "10555:5:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 5218,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 5216,
                                            "name": "currentNonce",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5195,
                                            "src": "10564:12:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "hexValue": "313030",
                                            "id": 5217,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "10579:3:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_100_by_1",
                                              "typeString": "int_const 100"
                                            },
                                            "value": "100"
                                          },
                                          "src": "10564:18:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 5219,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "10563:20:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "10555:28:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 5221,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10554:30:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "10527:57:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135354d657461235f7369676e617475726556616c69646174696f6e3a20494e56414c49445f4e4f4e4345",
                              "id": 5223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10592:49:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ff42cead1b7c6f0abed83c5e256b3e3ae18800a9206b9735befc73357d914de5",
                                "typeString": "literal_string \"ERC1155Meta#_signatureValidation: INVALID_NONCE\""
                              },
                              "value": "ERC1155Meta#_signatureValidation: INVALID_NONCE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ff42cead1b7c6f0abed83c5e256b3e3ae18800a9206b9735befc73357d914de5",
                                "typeString": "literal_string \"ERC1155Meta#_signatureValidation: INVALID_NONCE\""
                              }
                            ],
                            "id": 5210,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10512:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5224,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10512:135:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5225,
                        "nodeType": "ExpressionStatement",
                        "src": "10512:135:22"
                      },
                      {
                        "assignments": [
                          5227
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5227,
                            "mutability": "mutable",
                            "name": "hash",
                            "nodeType": "VariableDeclaration",
                            "scope": 5277,
                            "src": "10687:12:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5226,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "10687:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5240,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 5232,
                                      "name": "_encMembers",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5172,
                                      "src": "10747:11:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "id": 5233,
                                      "name": "nonce",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5201,
                                      "src": "10760:5:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "id": 5235,
                                          "name": "signedData",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5175,
                                          "src": "10777:10:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 5234,
                                        "name": "keccak256",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -8,
                                        "src": "10767:9:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (bytes memory) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 5236,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "10767:21:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5230,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "10730:3:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 5231,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "src": "10730:16:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 5237,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10730:59:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5229,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "10720:9:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 5238,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10720:70:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 5228,
                            "name": "hashEIP712Message",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7327,
                            "src": "10702:17:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32) view returns (bytes32)"
                            }
                          },
                          "id": 5239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10702:89:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10687:104:22"
                      },
                      {
                        "assignments": [
                          5242
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5242,
                            "mutability": "mutable",
                            "name": "fullData",
                            "nodeType": "VariableDeclaration",
                            "scope": 5277,
                            "src": "10846:21:22",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 5241,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "10846:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5249,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5245,
                              "name": "_encMembers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5172,
                              "src": "10887:11:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 5246,
                              "name": "nonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5201,
                              "src": "10900:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5247,
                              "name": "signedData",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5175,
                              "src": "10907:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 5243,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "10870:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 5244,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "10870:16:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 5248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10870:48:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10846:72:22"
                      },
                      {
                        "expression": {
                          "id": 5256,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 5250,
                              "name": "nonces",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4845,
                              "src": "10954:6:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 5252,
                            "indexExpression": {
                              "id": 5251,
                              "name": "_signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5168,
                              "src": "10961:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10954:15:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5255,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 5253,
                              "name": "nonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5201,
                              "src": "10972:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 5254,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10980:1:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "10972:9:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10954:27:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5257,
                        "nodeType": "ExpressionStatement",
                        "src": "10954:27:22"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 5259,
                              "name": "_signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5168,
                              "src": "11004:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5260,
                                "name": "nonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5201,
                                "src": "11013:5:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 5261,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11021:1:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "11013:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5258,
                            "name": "NonceChange",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4851,
                            "src": "10992:11:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 5263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10992:31:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5264,
                        "nodeType": "EmitStatement",
                        "src": "10987:36:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5267,
                                  "name": "_signer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5168,
                                  "src": "11092:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 5268,
                                  "name": "hash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5227,
                                  "src": "11101:4:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 5269,
                                  "name": "fullData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5242,
                                  "src": "11107:8:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                {
                                  "id": 5270,
                                  "name": "sig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5178,
                                  "src": "11117:3:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 5266,
                                "name": "isValidSignature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7730,
                                "src": "11075:16:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                  "typeString": "function (address,bytes32,bytes memory,bytes memory) view returns (bool)"
                                }
                              },
                              "id": 5271,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11075:46:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135354d657461235f7369676e617475726556616c69646174696f6e3a20494e56414c49445f5349474e4154555245",
                              "id": 5272,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11123:53:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6d3eb5c55a58dcdb83f34d1ad1e9a04e3cf6fabf83d70f1a41fc7973311b6fd4",
                                "typeString": "literal_string \"ERC1155Meta#_signatureValidation: INVALID_SIGNATURE\""
                              },
                              "value": "ERC1155Meta#_signatureValidation: INVALID_SIGNATURE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6d3eb5c55a58dcdb83f34d1ad1e9a04e3cf6fabf83d70f1a41fc7973311b6fd4",
                                "typeString": "literal_string \"ERC1155Meta#_signatureValidation: INVALID_SIGNATURE\""
                              }
                            ],
                            "id": 5265,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "11067:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11067:110:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5274,
                        "nodeType": "ExpressionStatement",
                        "src": "11067:110:22"
                      },
                      {
                        "expression": {
                          "id": 5275,
                          "name": "signedData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5175,
                          "src": "11190:10:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "functionReturnParameters": 5176,
                        "id": 5276,
                        "nodeType": "Return",
                        "src": "11183:17:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5166,
                    "nodeType": "StructuredDocumentation",
                    "src": "9298:661:22",
                    "text": " @notice Verifies signatures for this contract\n @param _signer     Address of signer\n @param _sigData    Encodes signature, gas payment receipt and transfer data (if any)\n @param _encMembers Encoded EIP-712 type members (except nonce and _data), all need to be 32 bytes size\n @dev _data should be encoded as (\n   (bytes32 r, bytes32 s, uint8 v, uint256 nonce, SignatureType sigType),\n   (GasReceipt g, ?bytes transferData)\n )\n   i.e. high level encoding should be (bytes, bytes), where the latter bytes array is a nested bytes array\n @dev A valid nonce is a nonce that is within 100 value from the current nonce"
                  },
                  "id": 5278,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_signatureValidation",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5173,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5168,
                        "mutability": "mutable",
                        "name": "_signer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5278,
                        "src": "9997:15:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5167,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9997:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5170,
                        "mutability": "mutable",
                        "name": "_sigData",
                        "nodeType": "VariableDeclaration",
                        "scope": 5278,
                        "src": "10018:21:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5169,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10018:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5172,
                        "mutability": "mutable",
                        "name": "_encMembers",
                        "nodeType": "VariableDeclaration",
                        "scope": 5278,
                        "src": "10045:24:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5171,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10045:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9991:79:22"
                  },
                  "returnParameters": {
                    "id": 5176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5175,
                        "mutability": "mutable",
                        "name": "signedData",
                        "nodeType": "VariableDeclaration",
                        "scope": 5278,
                        "src": "10093:23:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5174,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10093:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10092:25:22"
                  },
                  "scope": 5439,
                  "src": "9962:1243:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5290,
                    "nodeType": "Block",
                    "src": "11426:33:22",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "id": 5286,
                            "name": "nonces",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4845,
                            "src": "11439:6:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 5288,
                          "indexExpression": {
                            "id": 5287,
                            "name": "_signer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5281,
                            "src": "11446:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11439:15:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 5285,
                        "id": 5289,
                        "nodeType": "Return",
                        "src": "11432:22:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5279,
                    "nodeType": "StructuredDocumentation",
                    "src": "11209:137:22",
                    "text": " @notice Returns the current nonce associated with a given address\n @param _signer Address to query signature nonce for"
                  },
                  "functionSelector": "2d0335ab",
                  "id": 5291,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNonce",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5282,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5281,
                        "mutability": "mutable",
                        "name": "_signer",
                        "nodeType": "VariableDeclaration",
                        "scope": 5291,
                        "src": "11367:15:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5280,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11367:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11366:17:22"
                  },
                  "returnParameters": {
                    "id": 5285,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5284,
                        "mutability": "mutable",
                        "name": "nonce",
                        "nodeType": "VariableDeclaration",
                        "scope": 5291,
                        "src": "11409:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5283,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11409:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11408:15:22"
                  },
                  "scope": 5439,
                  "src": "11349:110:22",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5437,
                    "nodeType": "Block",
                    "src": "11980:1616:22",
                    "statements": [
                      {
                        "assignments": [
                          5300
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5300,
                            "mutability": "mutable",
                            "name": "feeTokenTypeRaw",
                            "nodeType": "VariableDeclaration",
                            "scope": 5437,
                            "src": "12029:21:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 5299,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "12029:5:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5308,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "expression": {
                                    "id": 5303,
                                    "name": "_g",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5296,
                                    "src": "12059:2:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                      "typeString": "struct ERC1155Meta.GasReceipt memory"
                                    }
                                  },
                                  "id": 5304,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "feeTokenData",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4836,
                                  "src": "12059:15:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 5305,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "popLastByte",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7263,
                                "src": "12059:27:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes1_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) pure returns (bytes1)"
                                }
                              },
                              "id": 5306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12059:29:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            ],
                            "id": 5302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "12053:5:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 5301,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "12053:5:22",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12053:36:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12029:60:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 5316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5310,
                                "name": "feeTokenTypeRaw",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5300,
                                "src": "12146:15:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 5313,
                                      "name": "FeeTokenType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4841,
                                      "src": "12170:12:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_FeeTokenType_$4841_$",
                                        "typeString": "type(enum ERC1155Meta.FeeTokenType)"
                                      }
                                    },
                                    "id": 5314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "NTypes",
                                    "nodeType": "MemberAccess",
                                    "src": "12170:19:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_FeeTokenType_$4841",
                                      "typeString": "enum ERC1155Meta.FeeTokenType"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_FeeTokenType_$4841",
                                      "typeString": "enum ERC1155Meta.FeeTokenType"
                                    }
                                  ],
                                  "id": 5312,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12164:5:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 5311,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12164:5:22",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5315,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12164:26:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "12146:44:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135354d657461235f7472616e736665724761734665653a20554e535550504f525445445f544f4b454e",
                              "id": 5317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12198:48:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ff7a2afde0cf20930776bc6456716ff6f86d3807496d5fb53db8b79cc341816a",
                                "typeString": "literal_string \"ERC1155Meta#_transferGasFee: UNSUPPORTED_TOKEN\""
                              },
                              "value": "ERC1155Meta#_transferGasFee: UNSUPPORTED_TOKEN"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_ff7a2afde0cf20930776bc6456716ff6f86d3807496d5fb53db8b79cc341816a",
                                "typeString": "literal_string \"ERC1155Meta#_transferGasFee: UNSUPPORTED_TOKEN\""
                              }
                            ],
                            "id": 5309,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "12131:7:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12131:121:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5319,
                        "nodeType": "ExpressionStatement",
                        "src": "12131:121:22"
                      },
                      {
                        "assignments": [
                          5321
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5321,
                            "mutability": "mutable",
                            "name": "feeTokenType",
                            "nodeType": "VariableDeclaration",
                            "scope": 5437,
                            "src": "12310:25:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_FeeTokenType_$4841",
                              "typeString": "enum ERC1155Meta.FeeTokenType"
                            },
                            "typeName": {
                              "id": 5320,
                              "name": "FeeTokenType",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 4841,
                              "src": "12310:12:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_FeeTokenType_$4841",
                                "typeString": "enum ERC1155Meta.FeeTokenType"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5325,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5323,
                              "name": "feeTokenTypeRaw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5300,
                              "src": "12351:15:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 5322,
                            "name": "FeeTokenType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4841,
                            "src": "12338:12:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_FeeTokenType_$4841_$",
                              "typeString": "type(enum ERC1155Meta.FeeTokenType)"
                            }
                          },
                          "id": 5324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12338:29:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_FeeTokenType_$4841",
                            "typeString": "enum ERC1155Meta.FeeTokenType"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12310:57:22"
                      },
                      {
                        "assignments": [
                          5327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5327,
                            "mutability": "mutable",
                            "name": "tokenAddress",
                            "nodeType": "VariableDeclaration",
                            "scope": 5437,
                            "src": "12394:20:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5326,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12394:7:22",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5328,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12394:20:22"
                      },
                      {
                        "assignments": [
                          5330
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5330,
                            "mutability": "mutable",
                            "name": "feeRecipient",
                            "nodeType": "VariableDeclaration",
                            "scope": 5437,
                            "src": "12420:20:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5329,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "12420:7:22",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5331,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12420:20:22"
                      },
                      {
                        "assignments": [
                          5333
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5333,
                            "mutability": "mutable",
                            "name": "tokenID",
                            "nodeType": "VariableDeclaration",
                            "scope": 5437,
                            "src": "12446:15:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5332,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12446:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5334,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12446:15:22"
                      },
                      {
                        "assignments": [
                          5336
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5336,
                            "mutability": "mutable",
                            "name": "fee",
                            "nodeType": "VariableDeclaration",
                            "scope": 5437,
                            "src": "12467:11:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5335,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12467:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5339,
                        "initialValue": {
                          "expression": {
                            "id": 5337,
                            "name": "_g",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5296,
                            "src": "12481:2:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                              "typeString": "struct ERC1155Meta.GasReceipt memory"
                            }
                          },
                          "id": 5338,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "gasFee",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4830,
                          "src": "12481:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12467:23:22"
                      },
                      {
                        "expression": {
                          "id": 5353,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5340,
                            "name": "feeRecipient",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5330,
                            "src": "12583:12:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 5341,
                                  "name": "_g",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5296,
                                  "src": "12598:2:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                    "typeString": "struct ERC1155Meta.GasReceipt memory"
                                  }
                                },
                                "id": 5342,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "feeRecipient",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4834,
                                "src": "12598:15:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 5345,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12625:1:22",
                                    "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": 5344,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12617:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 5343,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12617:7:22",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 5346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12617:10:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "12598:29:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "expression": {
                                "id": 5350,
                                "name": "_g",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5296,
                                "src": "12643:2:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                  "typeString": "struct ERC1155Meta.GasReceipt memory"
                                }
                              },
                              "id": 5351,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "feeRecipient",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4834,
                              "src": "12643:15:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 5352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "12598:60:22",
                            "trueExpression": {
                              "expression": {
                                "id": 5348,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "12630:3:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "12630:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12583:75:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5354,
                        "nodeType": "ExpressionStatement",
                        "src": "12583:75:22"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_FeeTokenType_$4841",
                            "typeString": "enum ERC1155Meta.FeeTokenType"
                          },
                          "id": 5358,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5355,
                            "name": "feeTokenType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5321,
                            "src": "12697:12:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_FeeTokenType_$4841",
                              "typeString": "enum ERC1155Meta.FeeTokenType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 5356,
                              "name": "FeeTokenType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4841,
                              "src": "12713:12:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_FeeTokenType_$4841_$",
                                "typeString": "type(enum ERC1155Meta.FeeTokenType)"
                              }
                            },
                            "id": 5357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ERC1155",
                            "nodeType": "MemberAccess",
                            "src": "12713:20:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_FeeTokenType_$4841",
                              "typeString": "enum ERC1155Meta.FeeTokenType"
                            }
                          },
                          "src": "12697:36:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5435,
                          "nodeType": "Block",
                          "src": "13370:222:22",
                          "statements": [
                            {
                              "expression": {
                                "id": 5421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5412,
                                  "name": "tokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5327,
                                  "src": "13378:12:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 5415,
                                        "name": "_g",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5296,
                                        "src": "13404:2:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                          "typeString": "struct ERC1155Meta.GasReceipt memory"
                                        }
                                      },
                                      "id": 5416,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "feeTokenData",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4836,
                                      "src": "13404:15:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "components": [
                                        {
                                          "id": 5418,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "13422:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 5417,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "13422:7:22",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "id": 5419,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "13421:9:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5413,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "13393:3:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 5414,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "decode",
                                    "nodeType": "MemberAccess",
                                    "src": "13393:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 5420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13393:38:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "13378:53:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 5422,
                              "nodeType": "ExpressionStatement",
                              "src": "13378:53:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 5428,
                                        "name": "_from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5294,
                                        "src": "13490:5:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 5429,
                                        "name": "feeRecipient",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5330,
                                        "src": "13497:12:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 5430,
                                        "name": "fee",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5336,
                                        "src": "13511:3:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "arguments": [
                                          {
                                            "id": 5425,
                                            "name": "tokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5327,
                                            "src": "13463:12:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 5424,
                                          "name": "IERC20",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4035,
                                          "src": "13456:6:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IERC20_$4035_$",
                                            "typeString": "type(contract IERC20)"
                                          }
                                        },
                                        "id": 5426,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "13456:20:22",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IERC20_$4035",
                                          "typeString": "contract IERC20"
                                        }
                                      },
                                      "id": 5427,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "transferFrom",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3997,
                                      "src": "13456:33:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                        "typeString": "function (address,address,uint256) external returns (bool)"
                                      }
                                    },
                                    "id": 5431,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13456:59:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "455243313135354d657461235f7472616e736665724761734665653a2045524332305f5452414e534645525f4641494c4544",
                                    "id": 5432,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13525:52:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_a4c4f8821c7e12dec6fe310a34d8ff084ce99b654e4106a50c39bdfc34cbf202",
                                      "typeString": "literal_string \"ERC1155Meta#_transferGasFee: ERC20_TRANSFER_FAILED\""
                                    },
                                    "value": "ERC1155Meta#_transferGasFee: ERC20_TRANSFER_FAILED"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_a4c4f8821c7e12dec6fe310a34d8ff084ce99b654e4106a50c39bdfc34cbf202",
                                      "typeString": "literal_string \"ERC1155Meta#_transferGasFee: ERC20_TRANSFER_FAILED\""
                                    }
                                  ],
                                  "id": 5423,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "13439:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 5433,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13439:146:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5434,
                              "nodeType": "ExpressionStatement",
                              "src": "13439:146:22"
                            }
                          ]
                        },
                        "id": 5436,
                        "nodeType": "IfStatement",
                        "src": "12693:899:22",
                        "trueBody": {
                          "id": 5411,
                          "nodeType": "Block",
                          "src": "12735:629:22",
                          "statements": [
                            {
                              "expression": {
                                "id": 5372,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 5359,
                                      "name": "tokenAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5327,
                                      "src": "12744:12:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 5360,
                                      "name": "tokenID",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5333,
                                      "src": "12758:7:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 5361,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "12743:23:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                                    "typeString": "tuple(address,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 5364,
                                        "name": "_g",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5296,
                                        "src": "12780:2:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                                          "typeString": "struct ERC1155Meta.GasReceipt memory"
                                        }
                                      },
                                      "id": 5365,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "feeTokenData",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4836,
                                      "src": "12780:15:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    {
                                      "components": [
                                        {
                                          "id": 5367,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "12798:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 5366,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "12798:7:22",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        {
                                          "id": 5369,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "12807:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_uint256_$",
                                            "typeString": "type(uint256)"
                                          },
                                          "typeName": {
                                            "id": 5368,
                                            "name": "uint256",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "12807:7:22",
                                            "typeDescriptions": {}
                                          }
                                        }
                                      ],
                                      "id": 5370,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "12797:18:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                        "typeString": "tuple(type(address),type(uint256))"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      },
                                      {
                                        "typeIdentifier": "t_tuple$_t_type$_t_address_$_$_t_type$_t_uint256_$_$",
                                        "typeString": "tuple(type(address),type(uint256))"
                                      }
                                    ],
                                    "expression": {
                                      "id": 5362,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "12769:3:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 5363,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "decode",
                                    "nodeType": "MemberAccess",
                                    "src": "12769:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 5371,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12769:47:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_address_payable_$_t_uint256_$",
                                    "typeString": "tuple(address payable,uint256)"
                                  }
                                },
                                "src": "12743:73:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5373,
                              "nodeType": "ExpressionStatement",
                              "src": "12743:73:22"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 5379,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 5374,
                                  "name": "tokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5327,
                                  "src": "12877:12:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "id": 5377,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "12901:4:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ERC1155Meta_$5439",
                                        "typeString": "contract ERC1155Meta"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ERC1155Meta_$5439",
                                        "typeString": "contract ERC1155Meta"
                                      }
                                    ],
                                    "id": 5376,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12893:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 5375,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12893:7:22",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5378,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12893:13:22",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "12877:29:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 5409,
                                "nodeType": "Block",
                                "src": "13234:97:22",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 5402,
                                          "name": "_from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5294,
                                          "src": "13284:5:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5403,
                                          "name": "feeRecipient",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5330,
                                          "src": "13291:12:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5404,
                                          "name": "tokenID",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5333,
                                          "src": "13305:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 5405,
                                          "name": "fee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5336,
                                          "src": "13314:3:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "",
                                          "id": 5406,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "13319:2:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          },
                                          "value": ""
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          }
                                        ],
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 5399,
                                              "name": "tokenAddress",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5327,
                                              "src": "13253:12:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 5398,
                                            "name": "IERC1155",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3875,
                                            "src": "13244:8:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                              "typeString": "type(contract IERC1155)"
                                            }
                                          },
                                          "id": 5400,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "13244:22:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IERC1155_$3875",
                                            "typeString": "contract IERC1155"
                                          }
                                        },
                                        "id": 5401,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "safeTransferFrom",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3817,
                                        "src": "13244:39:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,uint256,uint256,bytes memory) external"
                                        }
                                      },
                                      "id": 5407,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13244:78:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5408,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13244:78:22"
                                  }
                                ]
                              },
                              "id": 5410,
                              "nodeType": "IfStatement",
                              "src": "12873:458:22",
                              "trueBody": {
                                "id": 5397,
                                "nodeType": "Block",
                                "src": "12908:320:22",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 5381,
                                          "name": "_from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5294,
                                          "src": "12936:5:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5382,
                                          "name": "feeRecipient",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5330,
                                          "src": "12943:12:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5383,
                                          "name": "tokenID",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5333,
                                          "src": "12957:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 5384,
                                          "name": "fee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5336,
                                          "src": "12966:3:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 5380,
                                        "name": "_safeTransferFrom",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4475,
                                        "src": "12918:17:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,uint256,uint256)"
                                        }
                                      },
                                      "id": 5385,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12918:52:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5386,
                                    "nodeType": "ExpressionStatement",
                                    "src": "12918:52:22"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 5388,
                                          "name": "_from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5294,
                                          "src": "13117:5:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5389,
                                          "name": "feeRecipient",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5330,
                                          "src": "13124:12:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 5390,
                                          "name": "tokenID",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5333,
                                          "src": "13138:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 5391,
                                            "name": "gasleft",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -7,
                                            "src": "13147:7:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                              "typeString": "function () view returns (uint256)"
                                            }
                                          },
                                          "id": 5392,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "13147:9:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 5393,
                                          "name": "fee",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5336,
                                          "src": "13158:3:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "hexValue": "",
                                          "id": 5394,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "13163:2:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          },
                                          "value": ""
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          }
                                        ],
                                        "id": 5387,
                                        "name": "_callonERC1155Received",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4520,
                                        "src": "13094:22:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,uint256,uint256,uint256,bytes memory)"
                                        }
                                      },
                                      "id": 5395,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "13094:72:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 5396,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13094:72:22"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5292,
                    "nodeType": "StructuredDocumentation",
                    "src": "11585:313:22",
                    "text": " @notice Will reimburse tx.origin or fee recipient for the gas spent execution a transaction\n         Can reimbuse in any ERC-20 or ERC-1155 token\n @param _from  Address from which the payment will be made from\n @param _g     GasReceipt object that contains gas reimbursement information"
                  },
                  "id": 5438,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferGasFee",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5297,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5294,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5438,
                        "src": "11926:13:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5293,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11926:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5296,
                        "mutability": "mutable",
                        "name": "_g",
                        "nodeType": "VariableDeclaration",
                        "scope": 5438,
                        "src": "11941:20:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_GasReceipt_$4837_memory_ptr",
                          "typeString": "struct ERC1155Meta.GasReceipt"
                        },
                        "typeName": {
                          "id": 5295,
                          "name": "GasReceipt",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 4837,
                          "src": "11941:10:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_GasReceipt_$4837_storage_ptr",
                            "typeString": "struct ERC1155Meta.GasReceipt"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11925:37:22"
                  },
                  "returnParameters": {
                    "id": 5298,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11980:0:22"
                  },
                  "scope": 5439,
                  "src": "11901:1695:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5440,
              "src": "473:13125:22"
            }
          ],
          "src": "39:13560:22"
        },
        "id": 22
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155Metadata.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155Metadata.sol",
          "exportedSymbols": {
            "ERC1155Metadata": [
              5643
            ],
            "ERC165": [
              7229
            ],
            "IERC1155Metadata": [
              3892
            ]
          },
          "id": 5644,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5441,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:23"
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155Metadata.sol",
              "file": "../../interfaces/IERC1155Metadata.sol",
              "id": 5442,
              "nodeType": "ImportDirective",
              "scope": 5644,
              "sourceUnit": 3893,
              "src": "62:47:23",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/ERC165.sol",
              "file": "../../utils/ERC165.sol",
              "id": 5443,
              "nodeType": "ImportDirective",
              "scope": 5644,
              "sourceUnit": 7230,
              "src": "110:32:23",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5445,
                    "name": "IERC1155Metadata",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3892,
                    "src": "392:16:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155Metadata_$3892",
                      "typeString": "contract IERC1155Metadata"
                    }
                  },
                  "id": 5446,
                  "nodeType": "InheritanceSpecifier",
                  "src": "392:16:23"
                },
                {
                  "baseName": {
                    "id": 5447,
                    "name": "ERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7229,
                    "src": "410:6:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC165_$7229",
                      "typeString": "contract ERC165"
                    }
                  },
                  "id": 5448,
                  "nodeType": "InheritanceSpecifier",
                  "src": "410:6:23"
                }
              ],
              "contractDependencies": [
                3892,
                7229
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 5444,
                "nodeType": "StructuredDocumentation",
                "src": "145:218:23",
                "text": " @notice Contract that handles metadata related methods.\n @dev Methods assume a deterministic generation of URI based on token IDs.\n      Methods also assume that URI uses hex representation of token IDs."
              },
              "fullyImplemented": true,
              "id": 5643,
              "linearizedBaseContracts": [
                5643,
                7229,
                3892
              ],
              "name": "ERC1155Metadata",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 5450,
                  "mutability": "mutable",
                  "name": "baseMetadataURI",
                  "nodeType": "VariableDeclaration",
                  "scope": 5643,
                  "src": "451:31:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 5449,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "451:6:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3891
                  ],
                  "body": {
                    "id": 5471,
                    "nodeType": "Block",
                    "src": "911:84:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 5463,
                                  "name": "baseMetadataURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5450,
                                  "src": "948:15:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 5465,
                                      "name": "_id",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5453,
                                      "src": "975:3:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 5464,
                                    "name": "_uint2str",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5642,
                                    "src": "965:9:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (string memory)"
                                    }
                                  },
                                  "id": 5466,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "965:14:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "hexValue": "2e6a736f6e",
                                  "id": 5467,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "981:7:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_94311adc0a0cd4e10be11b23bd4316b8cffa4adf693e8f96f5c075aa439a7972",
                                    "typeString": "literal_string \".json\""
                                  },
                                  "value": ".json"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_storage",
                                    "typeString": "string storage ref"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_94311adc0a0cd4e10be11b23bd4316b8cffa4adf693e8f96f5c075aa439a7972",
                                    "typeString": "literal_string \".json\""
                                  }
                                ],
                                "expression": {
                                  "id": 5461,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "931:3:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 5462,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "931:16:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 5468,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "931:58:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5460,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "924:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 5459,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "924:6:23",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5469,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "924:66:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 5458,
                        "id": 5470,
                        "nodeType": "Return",
                        "src": "917:73:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5451,
                    "nodeType": "StructuredDocumentation",
                    "src": "608:229:23",
                    "text": " @notice A distinct Uniform Resource Identifier (URI) for a given token.\n @dev URIs are defined in RFC 3986.\n      URIs are assumed to be deterministically generated based on token ID\n @return URI string"
                  },
                  "functionSelector": "0e89341c",
                  "id": 5472,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "uri",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5455,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "873:8:23"
                  },
                  "parameters": {
                    "id": 5454,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5453,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 5472,
                        "src": "853:11:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5452,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "853:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "852:13:23"
                  },
                  "returnParameters": {
                    "id": 5458,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5457,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5472,
                        "src": "896:13:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5456,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "896:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "895:15:23"
                  },
                  "scope": 5643,
                  "src": "840:155:23",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5522,
                    "nodeType": "Block",
                    "src": "1325:264:23",
                    "statements": [
                      {
                        "assignments": [
                          5480
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5480,
                            "mutability": "mutable",
                            "name": "baseURL",
                            "nodeType": "VariableDeclaration",
                            "scope": 5522,
                            "src": "1331:21:23",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 5479,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1331:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5482,
                        "initialValue": {
                          "id": 5481,
                          "name": "baseMetadataURI",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5450,
                          "src": "1355:15:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1331:39:23"
                      },
                      {
                        "assignments": [
                          5484
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5484,
                            "mutability": "mutable",
                            "name": "tokenURI",
                            "nodeType": "VariableDeclaration",
                            "scope": 5522,
                            "src": "1376:22:23",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 5483,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "1376:6:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5485,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1376:22:23"
                      },
                      {
                        "body": {
                          "id": 5520,
                          "nodeType": "Block",
                          "src": "1452:133:23",
                          "statements": [
                            {
                              "expression": {
                                "id": 5511,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5497,
                                  "name": "tokenURI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5484,
                                  "src": "1460:8:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 5502,
                                          "name": "baseURL",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5480,
                                          "src": "1495:7:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "baseExpression": {
                                                "id": 5504,
                                                "name": "_tokenIDs",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5476,
                                                "src": "1514:9:23",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                  "typeString": "uint256[] memory"
                                                }
                                              },
                                              "id": 5506,
                                              "indexExpression": {
                                                "id": 5505,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5487,
                                                "src": "1524:1:23",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "1514:12:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 5503,
                                            "name": "_uint2str",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5642,
                                            "src": "1504:9:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                              "typeString": "function (uint256) pure returns (string memory)"
                                            }
                                          },
                                          "id": 5507,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1504:23:23",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        {
                                          "hexValue": "2e6a736f6e",
                                          "id": 5508,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1529:7:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_94311adc0a0cd4e10be11b23bd4316b8cffa4adf693e8f96f5c075aa439a7972",
                                            "typeString": "literal_string \".json\""
                                          },
                                          "value": ".json"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          },
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_94311adc0a0cd4e10be11b23bd4316b8cffa4adf693e8f96f5c075aa439a7972",
                                            "typeString": "literal_string \".json\""
                                          }
                                        ],
                                        "expression": {
                                          "id": 5500,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "1478:3:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 5501,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "src": "1478:16:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 5509,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1478:59:23",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 5499,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1471:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                      "typeString": "type(string storage pointer)"
                                    },
                                    "typeName": {
                                      "id": 5498,
                                      "name": "string",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1471:6:23",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5510,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1471:67:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "src": "1460:78:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "id": 5512,
                              "nodeType": "ExpressionStatement",
                              "src": "1460:78:23"
                            },
                            {
                              "eventCall": {
                                "arguments": [
                                  {
                                    "id": 5514,
                                    "name": "tokenURI",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5484,
                                    "src": "1555:8:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 5515,
                                      "name": "_tokenIDs",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5476,
                                      "src": "1565:9:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 5517,
                                    "indexExpression": {
                                      "id": 5516,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5487,
                                      "src": "1575:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1565:12:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5513,
                                  "name": "URI",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3883,
                                  "src": "1551:3:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$",
                                    "typeString": "function (string memory,uint256)"
                                  }
                                },
                                "id": 5518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1551:27:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5519,
                              "nodeType": "EmitStatement",
                              "src": "1546:32:23"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5493,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5490,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5487,
                            "src": "1425:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 5491,
                              "name": "_tokenIDs",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5476,
                              "src": "1429:9:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 5492,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1429:16:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1425:20:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5521,
                        "initializationExpression": {
                          "assignments": [
                            5487
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5487,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 5521,
                              "src": "1410:9:23",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5486,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1410:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5489,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 5488,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1422:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1410:13:23"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 5495,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1447:3:23",
                            "subExpression": {
                              "id": 5494,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5487,
                              "src": "1447:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5496,
                          "nodeType": "ExpressionStatement",
                          "src": "1447:3:23"
                        },
                        "nodeType": "ForStatement",
                        "src": "1405:180:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5473,
                    "nodeType": "StructuredDocumentation",
                    "src": "1121:146:23",
                    "text": " @notice Will emit default URI log event for corresponding token _id\n @param _tokenIDs Array of IDs of tokens to log default URI"
                  },
                  "id": 5523,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_logURIs",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5477,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5476,
                        "mutability": "mutable",
                        "name": "_tokenIDs",
                        "nodeType": "VariableDeclaration",
                        "scope": 5523,
                        "src": "1288:26:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5474,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1288:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5475,
                          "nodeType": "ArrayTypeName",
                          "src": "1288:9:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1287:28:23"
                  },
                  "returnParameters": {
                    "id": 5478,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1325:0:23"
                  },
                  "scope": 5643,
                  "src": "1270:319:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5533,
                    "nodeType": "Block",
                    "src": "1791:48:23",
                    "statements": [
                      {
                        "expression": {
                          "id": 5531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5529,
                            "name": "baseMetadataURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5450,
                            "src": "1797:15:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage",
                              "typeString": "string storage ref"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5530,
                            "name": "_newBaseMetadataURI",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5526,
                            "src": "1815:19:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "1797:37:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "id": 5532,
                        "nodeType": "ExpressionStatement",
                        "src": "1797:37:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5524,
                    "nodeType": "StructuredDocumentation",
                    "src": "1593:122:23",
                    "text": " @notice Will update the base URL of token's URI\n @param _newBaseMetadataURI New base URL of token's URI"
                  },
                  "id": 5534,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setBaseMetadataURI",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5527,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5526,
                        "mutability": "mutable",
                        "name": "_newBaseMetadataURI",
                        "nodeType": "VariableDeclaration",
                        "scope": 5534,
                        "src": "1747:33:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5525,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1747:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1746:35:23"
                  },
                  "returnParameters": {
                    "id": 5528,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1791:0:23"
                  },
                  "scope": 5643,
                  "src": "1718:121:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    7228
                  ],
                  "body": {
                    "id": 5558,
                    "nodeType": "Block",
                    "src": "2146:142:23",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 5548,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5543,
                            "name": "_interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5537,
                            "src": "2156:12:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 5545,
                                  "name": "IERC1155Metadata",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3892,
                                  "src": "2177:16:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC1155Metadata_$3892_$",
                                    "typeString": "type(contract IERC1155Metadata)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_IERC1155Metadata_$3892_$",
                                    "typeString": "type(contract IERC1155Metadata)"
                                  }
                                ],
                                "id": 5544,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "2172:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 5546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2172:22:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155Metadata_$3892",
                                "typeString": "type(contract IERC1155Metadata)"
                              }
                            },
                            "id": 5547,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "interfaceId",
                            "nodeType": "MemberAccess",
                            "src": "2172:34:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "2156:50:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5552,
                        "nodeType": "IfStatement",
                        "src": "2152:82:23",
                        "trueBody": {
                          "id": 5551,
                          "nodeType": "Block",
                          "src": "2208:26:23",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "74727565",
                                "id": 5549,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2223:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 5542,
                              "id": 5550,
                              "nodeType": "Return",
                              "src": "2216:11:23"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5555,
                              "name": "_interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5537,
                              "src": "2270:12:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 5553,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "2246:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155Metadata_$5643",
                                "typeString": "contract super ERC1155Metadata"
                              }
                            },
                            "id": 5554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7228,
                            "src": "2246:23:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) pure returns (bool)"
                            }
                          },
                          "id": 5556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2246:37:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 5542,
                        "id": 5557,
                        "nodeType": "Return",
                        "src": "2239:44:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5535,
                    "nodeType": "StructuredDocumentation",
                    "src": "1843:208:23",
                    "text": " @notice Query if a contract implements an interface\n @param _interfaceID  The interface identifier, as specified in ERC-165\n @return `true` if the contract implements `_interfaceID` and"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 5559,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 5539,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2109:8:23"
                  },
                  "parameters": {
                    "id": 5538,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5537,
                        "mutability": "mutable",
                        "name": "_interfaceID",
                        "nodeType": "VariableDeclaration",
                        "scope": 5559,
                        "src": "2081:19:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 5536,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2081:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2080:21:23"
                  },
                  "returnParameters": {
                    "id": 5542,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5541,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 5559,
                        "src": "2140:4:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5540,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2140:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2139:6:23"
                  },
                  "scope": 5643,
                  "src": "2054:234:23",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5641,
                    "nodeType": "Block",
                    "src": "2601:430:23",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5567,
                            "name": "_i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5562,
                            "src": "2611:2:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5568,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2617:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2611:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5573,
                        "nodeType": "IfStatement",
                        "src": "2607:38:23",
                        "trueBody": {
                          "id": 5572,
                          "nodeType": "Block",
                          "src": "2620:25:23",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 5570,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2635:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                  "typeString": "literal_string \"0\""
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 5566,
                              "id": 5571,
                              "nodeType": "Return",
                              "src": "2628:10:23"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          5575
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5575,
                            "mutability": "mutable",
                            "name": "j",
                            "nodeType": "VariableDeclaration",
                            "scope": 5641,
                            "src": "2651:9:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5574,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2651:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5577,
                        "initialValue": {
                          "id": 5576,
                          "name": "_i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5562,
                          "src": "2663:2:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2651:14:23"
                      },
                      {
                        "assignments": [
                          5579
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5579,
                            "mutability": "mutable",
                            "name": "ii",
                            "nodeType": "VariableDeclaration",
                            "scope": 5641,
                            "src": "2671:10:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5578,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2671:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5581,
                        "initialValue": {
                          "id": 5580,
                          "name": "_i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5562,
                          "src": "2684:2:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2671:15:23"
                      },
                      {
                        "assignments": [
                          5583
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5583,
                            "mutability": "mutable",
                            "name": "len",
                            "nodeType": "VariableDeclaration",
                            "scope": 5641,
                            "src": "2692:11:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5582,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2692:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5584,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2692:11:23"
                      },
                      {
                        "body": {
                          "id": 5595,
                          "nodeType": "Block",
                          "src": "2752:35:23",
                          "statements": [
                            {
                              "expression": {
                                "id": 5589,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "2760:5:23",
                                "subExpression": {
                                  "id": 5588,
                                  "name": "len",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5583,
                                  "src": "2760:3:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5590,
                              "nodeType": "ExpressionStatement",
                              "src": "2760:5:23"
                            },
                            {
                              "expression": {
                                "id": 5593,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5591,
                                  "name": "j",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5575,
                                  "src": "2773:1:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 5592,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2778:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "2773:7:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5594,
                              "nodeType": "ExpressionStatement",
                              "src": "2773:7:23"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5585,
                            "name": "j",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5575,
                            "src": "2744:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2749:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2744:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5596,
                        "nodeType": "WhileStatement",
                        "src": "2737:50:23"
                      },
                      {
                        "assignments": [
                          5598
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5598,
                            "mutability": "mutable",
                            "name": "bstr",
                            "nodeType": "VariableDeclaration",
                            "scope": 5641,
                            "src": "2793:17:23",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 5597,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2793:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5603,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5601,
                              "name": "len",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5583,
                              "src": "2823:3:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5600,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "2813:9:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 5599,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "2817:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 5602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2813:14:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2793:34:23"
                      },
                      {
                        "assignments": [
                          5605
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5605,
                            "mutability": "mutable",
                            "name": "k",
                            "nodeType": "VariableDeclaration",
                            "scope": 5641,
                            "src": "2833:9:23",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5604,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2833:7:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5609,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5608,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5606,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5583,
                            "src": "2845:3:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 5607,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2851:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2845:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2833:19:23"
                      },
                      {
                        "body": {
                          "id": 5634,
                          "nodeType": "Block",
                          "src": "2908:68:23",
                          "statements": [
                            {
                              "expression": {
                                "id": 5628,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 5613,
                                    "name": "bstr",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5598,
                                    "src": "2916:4:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 5616,
                                  "indexExpression": {
                                    "id": 5615,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "--",
                                    "prefix": false,
                                    "src": "2921:3:23",
                                    "subExpression": {
                                      "id": 5614,
                                      "name": "k",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5605,
                                      "src": "2921:1:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2916:9:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 5625,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3438",
                                            "id": 5621,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2939:2:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_48_by_1",
                                              "typeString": "int_const 48"
                                            },
                                            "value": "48"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 5624,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 5622,
                                              "name": "ii",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5579,
                                              "src": "2944:2:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "%",
                                            "rightExpression": {
                                              "hexValue": "3130",
                                              "id": 5623,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "2949:2:23",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_10_by_1",
                                                "typeString": "int_const 10"
                                              },
                                              "value": "10"
                                            },
                                            "src": "2944:7:23",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "2939:12:23",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 5620,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2933:5:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        },
                                        "typeName": {
                                          "id": 5619,
                                          "name": "uint8",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2933:5:23",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 5626,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2933:19:23",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    ],
                                    "id": 5618,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2928:4:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 5617,
                                      "name": "byte",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2928:4:23",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 5627,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2928:25:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "2916:37:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "id": 5629,
                              "nodeType": "ExpressionStatement",
                              "src": "2916:37:23"
                            },
                            {
                              "expression": {
                                "id": 5632,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5630,
                                  "name": "ii",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5579,
                                  "src": "2961:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "/=",
                                "rightHandSide": {
                                  "hexValue": "3130",
                                  "id": 5631,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2967:2:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "2961:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5633,
                              "nodeType": "ExpressionStatement",
                              "src": "2961:8:23"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5610,
                            "name": "ii",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5579,
                            "src": "2899:2:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2905:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2899:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5635,
                        "nodeType": "WhileStatement",
                        "src": "2892:84:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5638,
                              "name": "bstr",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5598,
                              "src": "3021:4:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5637,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3014:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                              "typeString": "type(string storage pointer)"
                            },
                            "typeName": {
                              "id": 5636,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "3014:6:23",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5639,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3014:12:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 5566,
                        "id": 5640,
                        "nodeType": "Return",
                        "src": "3007:19:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5560,
                    "nodeType": "StructuredDocumentation",
                    "src": "2414:101:23",
                    "text": " @notice Convert uint256 to string\n @param _i Unsigned integer to convert to string"
                  },
                  "id": 5642,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_uint2str",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5563,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5562,
                        "mutability": "mutable",
                        "name": "_i",
                        "nodeType": "VariableDeclaration",
                        "scope": 5642,
                        "src": "2537:10:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5561,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2537:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2536:12:23"
                  },
                  "returnParameters": {
                    "id": 5566,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5565,
                        "mutability": "mutable",
                        "name": "_uintAsString",
                        "nodeType": "VariableDeclaration",
                        "scope": 5642,
                        "src": "2572:27:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5564,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "2572:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2571:29:23"
                  },
                  "scope": 5643,
                  "src": "2518:513:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5644,
              "src": "364:2669:23"
            }
          ],
          "src": "39:2995:23"
        },
        "id": 23
      },
      "multi-token-standard/contracts/tokens/ERC1155/ERC1155MintBurn.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155MintBurn.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155": [
              4812
            ],
            "ERC1155MintBurn": [
              5902
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 5903,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5645,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:24"
            },
            {
              "absolutePath": "multi-token-standard/contracts/tokens/ERC1155/ERC1155.sol",
              "file": "./ERC1155.sol",
              "id": 5646,
              "nodeType": "ImportDirective",
              "scope": 5903,
              "sourceUnit": 4813,
              "src": "62:23:24",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5648,
                    "name": "ERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 4812,
                    "src": "283:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155_$4812",
                      "typeString": "contract ERC1155"
                    }
                  },
                  "id": 5649,
                  "nodeType": "InheritanceSpecifier",
                  "src": "283:7:24"
                }
              ],
              "contractDependencies": [
                3875,
                4812,
                7229
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 5647,
                "nodeType": "StructuredDocumentation",
                "src": "88:166:24",
                "text": " @dev Multi-Fungible Tokens with minting and burning methods. These methods assume\n      a parent contract to be executed as they are `internal` functions"
              },
              "fullyImplemented": true,
              "id": 5902,
              "linearizedBaseContracts": [
                5902,
                4812,
                7229,
                3875
              ],
              "name": "ERC1155MintBurn",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 5652,
                  "libraryName": {
                    "id": 5650,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7467,
                    "src": "301:8:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$7467",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "295:27:24",
                  "typeName": {
                    "id": 5651,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "314:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "body": {
                    "id": 5704,
                    "nodeType": "Block",
                    "src": "809:308:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 5677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 5664,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4299,
                                "src": "834:8:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 5667,
                              "indexExpression": {
                                "id": 5665,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5655,
                                "src": "843:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "834:13:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 5668,
                            "indexExpression": {
                              "id": 5666,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5657,
                              "src": "848:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "834:18:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5675,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5659,
                                "src": "878:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 5669,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4299,
                                    "src": "855:8:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => uint256))"
                                    }
                                  },
                                  "id": 5671,
                                  "indexExpression": {
                                    "id": 5670,
                                    "name": "_to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5655,
                                    "src": "864:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "855:13:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 5673,
                                "indexExpression": {
                                  "id": 5672,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5657,
                                  "src": "869:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "855:18:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5674,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "add",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7444,
                              "src": "855:22:24",
                              "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": 5676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "855:31:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "834:52:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5678,
                        "nodeType": "ExpressionStatement",
                        "src": "834:52:24"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5680,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "931:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5681,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "931:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 5684,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "951:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 5683,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "943:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5682,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "943:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5685,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "943:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5686,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5655,
                              "src": "957:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5687,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5657,
                              "src": "962:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5688,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "967:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5679,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3779,
                            "src": "916:14:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 5689,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "916:59:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5690,
                        "nodeType": "EmitStatement",
                        "src": "911:64:24"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 5694,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1070:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 5693,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1062:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5692,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1062:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1062:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5696,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5655,
                              "src": "1076:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5697,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5657,
                              "src": "1081:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5698,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5659,
                              "src": "1086:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5699,
                                "name": "gasleft",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -7,
                                "src": "1095:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 5700,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1095:9:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5701,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5661,
                              "src": "1106:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5691,
                            "name": "_callonERC1155Received",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4520,
                            "src": "1039:22:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 5702,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1039:73:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5703,
                        "nodeType": "ExpressionStatement",
                        "src": "1039:73:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5653,
                    "nodeType": "StructuredDocumentation",
                    "src": "462:251:24",
                    "text": " @notice Mint _amount of tokens of a given id\n @param _to      The address to mint tokens to\n @param _id      Token id to mint\n @param _amount  The amount to be minted\n @param _data    Data to pass if receiver is contract"
                  },
                  "id": 5705,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5662,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5655,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5705,
                        "src": "731:11:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5654,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "731:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5657,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 5705,
                        "src": "744:11:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5656,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "744:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5659,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5705,
                        "src": "757:15:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5658,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "757:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5661,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5705,
                        "src": "774:18:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5660,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "774:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "730:63:24"
                  },
                  "returnParameters": {
                    "id": 5663,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "809:0:24"
                  },
                  "scope": 5902,
                  "src": "716:401:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5791,
                    "nodeType": "Block",
                    "src": "1513:598:24",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 5720,
                                  "name": "_ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5711,
                                  "src": "1527:4:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5721,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1527:11:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 5722,
                                  "name": "_amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5714,
                                  "src": "1542:8:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1542:15:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1527:30:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135354d696e744275726e2362617463684d696e743a20494e56414c49445f4152524159535f4c454e475448",
                              "id": 5725,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1559:50:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c2cdf00e4a379c0509b8cafddb567aa263e86c456840ebcc166df90a496f2dcf",
                                "typeString": "literal_string \"ERC1155MintBurn#batchMint: INVALID_ARRAYS_LENGTH\""
                              },
                              "value": "ERC1155MintBurn#batchMint: INVALID_ARRAYS_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c2cdf00e4a379c0509b8cafddb567aa263e86c456840ebcc166df90a496f2dcf",
                                "typeString": "literal_string \"ERC1155MintBurn#batchMint: INVALID_ARRAYS_LENGTH\""
                              }
                            ],
                            "id": 5719,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1519:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5726,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1519:91:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5727,
                        "nodeType": "ExpressionStatement",
                        "src": "1519:91:24"
                      },
                      {
                        "assignments": [
                          5729
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5729,
                            "mutability": "mutable",
                            "name": "nMint",
                            "nodeType": "VariableDeclaration",
                            "scope": 5791,
                            "src": "1651:13:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5728,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1651:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5732,
                        "initialValue": {
                          "expression": {
                            "id": 5730,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5711,
                            "src": "1667:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 5731,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "1667:11:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1651:27:24"
                      },
                      {
                        "body": {
                          "id": 5764,
                          "nodeType": "Block",
                          "src": "1751:111:24",
                          "statements": [
                            {
                              "expression": {
                                "id": 5762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 5743,
                                      "name": "balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4299,
                                      "src": "1791:8:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => uint256))"
                                      }
                                    },
                                    "id": 5748,
                                    "indexExpression": {
                                      "id": 5744,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5708,
                                      "src": "1800:3:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1791:13:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 5749,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 5745,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5711,
                                      "src": "1805:4:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 5747,
                                    "indexExpression": {
                                      "id": 5746,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5734,
                                      "src": "1810:1:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1805:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1791:22:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 5758,
                                        "name": "_amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5714,
                                        "src": "1843:8:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 5760,
                                      "indexExpression": {
                                        "id": 5759,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5734,
                                        "src": "1852:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1843:11:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "id": 5750,
                                          "name": "balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4299,
                                          "src": "1816:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                            "typeString": "mapping(address => mapping(uint256 => uint256))"
                                          }
                                        },
                                        "id": 5752,
                                        "indexExpression": {
                                          "id": 5751,
                                          "name": "_to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5708,
                                          "src": "1825:3:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "1816:13:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 5756,
                                      "indexExpression": {
                                        "baseExpression": {
                                          "id": 5753,
                                          "name": "_ids",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5711,
                                          "src": "1830:4:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 5755,
                                        "indexExpression": {
                                          "id": 5754,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5734,
                                          "src": "1835:1:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "1830:7:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1816:22:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5757,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "add",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7444,
                                    "src": "1816:26:24",
                                    "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": 5761,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1816:39:24",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1791:64:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5763,
                              "nodeType": "ExpressionStatement",
                              "src": "1791:64:24"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5739,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5737,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5734,
                            "src": "1735:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 5738,
                            "name": "nMint",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5729,
                            "src": "1739:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1735:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5765,
                        "initializationExpression": {
                          "assignments": [
                            5734
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5734,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 5765,
                              "src": "1720:9:24",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5733,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "1720:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5736,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 5735,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1732:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "1720:13:24"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 5741,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "1746:3:24",
                            "subExpression": {
                              "id": 5740,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5734,
                              "src": "1746:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5742,
                          "nodeType": "ExpressionStatement",
                          "src": "1746:3:24"
                        },
                        "nodeType": "ForStatement",
                        "src": "1715:147:24"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5767,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1916:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1916:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 5771,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1936:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 5770,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1928:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5769,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1928:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5772,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1928:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5773,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5708,
                              "src": "1942:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5774,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5711,
                              "src": "1947:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5775,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5714,
                              "src": "1953:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 5766,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3794,
                            "src": "1902:13:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 5776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1902:60:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5777,
                        "nodeType": "EmitStatement",
                        "src": "1897:65:24"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 5781,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2062:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 5780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2054:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5779,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2054:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5782,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2054:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5783,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5708,
                              "src": "2068:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5784,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5711,
                              "src": "2073:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5785,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5714,
                              "src": "2079:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5786,
                                "name": "gasleft",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -7,
                                "src": "2089:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 5787,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2089:9:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5788,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5716,
                              "src": "2100:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5778,
                            "name": "_callonERC1155BatchReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4659,
                            "src": "2026:27:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,uint256,bytes memory)"
                            }
                          },
                          "id": 5789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2026:80:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5790,
                        "nodeType": "ExpressionStatement",
                        "src": "2026:80:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5706,
                    "nodeType": "StructuredDocumentation",
                    "src": "1121:271:24",
                    "text": " @notice Mint tokens for each ids in _ids\n @param _to       The address to mint tokens to\n @param _ids      Array of ids to mint\n @param _amounts  Array of amount of tokens to mint per id\n @param _data    Data to pass if receiver is contract"
                  },
                  "id": 5792,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5717,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5708,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5792,
                        "src": "1415:11:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5707,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1415:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5711,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 5792,
                        "src": "1428:21:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5709,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1428:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5710,
                          "nodeType": "ArrayTypeName",
                          "src": "1428:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5714,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 5792,
                        "src": "1451:25:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5712,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1451:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5713,
                          "nodeType": "ArrayTypeName",
                          "src": "1451:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5716,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5792,
                        "src": "1478:18:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5715,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1478:5:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1414:83:24"
                  },
                  "returnParameters": {
                    "id": 5718,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1513:0:24"
                  },
                  "scope": 5902,
                  "src": "1395:716:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5829,
                    "nodeType": "Block",
                    "src": "2531:182:24",
                    "statements": [
                      {
                        "expression": {
                          "id": 5815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 5802,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4299,
                                "src": "2561:8:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 5805,
                              "indexExpression": {
                                "id": 5803,
                                "name": "_from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5795,
                                "src": "2570:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2561:15:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 5806,
                            "indexExpression": {
                              "id": 5804,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5797,
                              "src": "2577:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "2561:20:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5813,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5799,
                                "src": "2609:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 5807,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4299,
                                    "src": "2584:8:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => uint256))"
                                    }
                                  },
                                  "id": 5809,
                                  "indexExpression": {
                                    "id": 5808,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5795,
                                    "src": "2593:5:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2584:15:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 5811,
                                "indexExpression": {
                                  "id": 5810,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5797,
                                  "src": "2600:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2584:20:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7418,
                              "src": "2584:24:24",
                              "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": 5814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2584:33:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2561:56:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5816,
                        "nodeType": "ExpressionStatement",
                        "src": "2561:56:24"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5818,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2662:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5819,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2662:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5820,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5795,
                              "src": "2674:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 5823,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2689:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 5822,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2681:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5821,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2681:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2681:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5825,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5797,
                              "src": "2695:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5826,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5799,
                              "src": "2700:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5817,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3779,
                            "src": "2647:14:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 5827,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2647:61:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5828,
                        "nodeType": "EmitStatement",
                        "src": "2642:66:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5793,
                    "nodeType": "StructuredDocumentation",
                    "src": "2252:201:24",
                    "text": " @notice Burn _amount of tokens of a given token id\n @param _from    The address to burn tokens from\n @param _id      Token id to burn\n @param _amount  The amount to be burned"
                  },
                  "id": 5830,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5800,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5795,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5830,
                        "src": "2471:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5794,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2471:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5797,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 5830,
                        "src": "2486:11:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5796,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2486:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5799,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5830,
                        "src": "2499:15:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5798,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2499:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2470:45:24"
                  },
                  "returnParameters": {
                    "id": 5801,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2531:0:24"
                  },
                  "scope": 5902,
                  "src": "2456:257:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5900,
                    "nodeType": "Block",
                    "src": "3067:452:24",
                    "statements": [
                      {
                        "assignments": [
                          5843
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5843,
                            "mutability": "mutable",
                            "name": "nBurn",
                            "nodeType": "VariableDeclaration",
                            "scope": 5900,
                            "src": "3107:13:24",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5842,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3107:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5846,
                        "initialValue": {
                          "expression": {
                            "id": 5844,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5836,
                            "src": "3123:4:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 5845,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "3123:11:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3107:27:24"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5848,
                                "name": "nBurn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5843,
                                "src": "3148:5:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 5849,
                                  "name": "_amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5839,
                                  "src": "3157:8:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5850,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "3157:15:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3148:24:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135354d696e744275726e2362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448",
                              "id": 5852,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3174:50:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_92d6c72c0bfcfeb49daaa9cdaa3cb6eaf5bea3606e77850ddb5abca8245aefb7",
                                "typeString": "literal_string \"ERC1155MintBurn#batchBurn: INVALID_ARRAYS_LENGTH\""
                              },
                              "value": "ERC1155MintBurn#batchBurn: INVALID_ARRAYS_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_92d6c72c0bfcfeb49daaa9cdaa3cb6eaf5bea3606e77850ddb5abca8245aefb7",
                                "typeString": "literal_string \"ERC1155MintBurn#batchBurn: INVALID_ARRAYS_LENGTH\""
                              }
                            ],
                            "id": 5847,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3140:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3140:85:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5854,
                        "nodeType": "ExpressionStatement",
                        "src": "3140:85:24"
                      },
                      {
                        "body": {
                          "id": 5886,
                          "nodeType": "Block",
                          "src": "3297:115:24",
                          "statements": [
                            {
                              "expression": {
                                "id": 5884,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 5865,
                                      "name": "balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4299,
                                      "src": "3337:8:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => uint256))"
                                      }
                                    },
                                    "id": 5870,
                                    "indexExpression": {
                                      "id": 5866,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5833,
                                      "src": "3346:5:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3337:15:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 5871,
                                  "indexExpression": {
                                    "baseExpression": {
                                      "id": 5867,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5836,
                                      "src": "3353:4:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 5869,
                                    "indexExpression": {
                                      "id": 5868,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5856,
                                      "src": "3358:1:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3353:7:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3337:24:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 5880,
                                        "name": "_amounts",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5839,
                                        "src": "3393:8:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 5882,
                                      "indexExpression": {
                                        "id": 5881,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5856,
                                        "src": "3402:1:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3393:11:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "baseExpression": {
                                        "baseExpression": {
                                          "id": 5872,
                                          "name": "balances",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4299,
                                          "src": "3364:8:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                            "typeString": "mapping(address => mapping(uint256 => uint256))"
                                          }
                                        },
                                        "id": 5874,
                                        "indexExpression": {
                                          "id": 5873,
                                          "name": "_from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5833,
                                          "src": "3373:5:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3364:15:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                          "typeString": "mapping(uint256 => uint256)"
                                        }
                                      },
                                      "id": 5878,
                                      "indexExpression": {
                                        "baseExpression": {
                                          "id": 5875,
                                          "name": "_ids",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5836,
                                          "src": "3380:4:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                            "typeString": "uint256[] memory"
                                          }
                                        },
                                        "id": 5877,
                                        "indexExpression": {
                                          "id": 5876,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5856,
                                          "src": "3385:1:24",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3380:7:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "3364:24:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5879,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 7418,
                                    "src": "3364:28:24",
                                    "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": 5883,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3364:41:24",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3337:68:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5885,
                              "nodeType": "ExpressionStatement",
                              "src": "3337:68:24"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5859,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5856,
                            "src": "3281:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 5860,
                            "name": "nBurn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5843,
                            "src": "3285:5:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3281:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5887,
                        "initializationExpression": {
                          "assignments": [
                            5856
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 5856,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 5887,
                              "src": "3266:9:24",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 5855,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "3266:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 5858,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 5857,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3278:1:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3266:13:24"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 5863,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "3292:3:24",
                            "subExpression": {
                              "id": 5862,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5856,
                              "src": "3292:1:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5864,
                          "nodeType": "ExpressionStatement",
                          "src": "3292:3:24"
                        },
                        "nodeType": "ForStatement",
                        "src": "3261:151:24"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5889,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3466:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5890,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3466:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5891,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5833,
                              "src": "3478:5:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 5894,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3493:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 5893,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3485:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5892,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3485:7:24",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3485:12:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5896,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5836,
                              "src": "3499:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 5897,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5839,
                              "src": "3505:8:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 5888,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3794,
                            "src": "3452:13:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 5898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3452:62:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5899,
                        "nodeType": "EmitStatement",
                        "src": "3447:67:24"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5831,
                    "nodeType": "StructuredDocumentation",
                    "src": "2717:247:24",
                    "text": " @notice Burn tokens of given token id for each (_ids[i], _amounts[i]) pair\n @param _from     The address to burn tokens from\n @param _ids      Array of token ids to burn\n @param _amounts  Array of the amount to be burned"
                  },
                  "id": 5901,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_batchBurn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5840,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5833,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 5901,
                        "src": "2987:13:24",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5832,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2987:7:24",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5836,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 5901,
                        "src": "3002:21:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5834,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3002:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5835,
                          "nodeType": "ArrayTypeName",
                          "src": "3002:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5839,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 5901,
                        "src": "3025:25:24",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5837,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3025:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5838,
                          "nodeType": "ArrayTypeName",
                          "src": "3025:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2986:65:24"
                  },
                  "returnParameters": {
                    "id": 5841,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3067:0:24"
                  },
                  "scope": 5902,
                  "src": "2967:552:24",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5903,
              "src": "255:3266:24"
            }
          ],
          "src": "39:3483:24"
        },
        "id": 24
      },
      "multi-token-standard/contracts/tokens/ERC1155PackedBalance/ERC1155MintBurnPackedBalance.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/tokens/ERC1155PackedBalance/ERC1155MintBurnPackedBalance.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155MintBurnPackedBalance": [
              6205
            ],
            "ERC1155PackedBalance": [
              7182
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 6206,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5904,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:25"
            },
            {
              "absolutePath": "multi-token-standard/contracts/tokens/ERC1155PackedBalance/ERC1155PackedBalance.sol",
              "file": "./ERC1155PackedBalance.sol",
              "id": 5905,
              "nodeType": "ImportDirective",
              "scope": 6206,
              "sourceUnit": 7183,
              "src": "63:36:25",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5907,
                    "name": "ERC1155PackedBalance",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7182,
                    "src": "311:20:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC1155PackedBalance_$7182",
                      "typeString": "contract ERC1155PackedBalance"
                    }
                  },
                  "id": 5908,
                  "nodeType": "InheritanceSpecifier",
                  "src": "311:20:25"
                }
              ],
              "contractDependencies": [
                3875,
                7182,
                7229
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 5906,
                "nodeType": "StructuredDocumentation",
                "src": "102:167:25",
                "text": " @dev Multi-Fungible Tokens with minting and burning methods. These methods assume\n      a parent contract to be executed as they are `internal` functions."
              },
              "fullyImplemented": true,
              "id": 6205,
              "linearizedBaseContracts": [
                6205,
                7182,
                7229,
                3875
              ],
              "name": "ERC1155MintBurnPackedBalance",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5953,
                    "nodeType": "Block",
                    "src": "820:335:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5921,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5911,
                              "src": "861:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5922,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5913,
                              "src": "868:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5923,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5915,
                              "src": "873:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 5924,
                                "name": "Operations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6240,
                                "src": "882:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                  "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                }
                              },
                              "id": 5925,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Add",
                              "nodeType": "MemberAccess",
                              "src": "882:14:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Operations_$6240",
                                "typeString": "enum ERC1155PackedBalance.Operations"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_Operations_$6240",
                                "typeString": "enum ERC1155PackedBalance.Operations"
                              }
                            ],
                            "id": 5920,
                            "name": "_updateIDBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6979,
                            "src": "844:16:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$__$",
                              "typeString": "function (address,uint256,uint256,enum ERC1155PackedBalance.Operations)"
                            }
                          },
                          "id": 5926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "844:53:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5927,
                        "nodeType": "ExpressionStatement",
                        "src": "844:53:25"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 5929,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "969:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "969:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 5933,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "989:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 5932,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "981:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5931,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "981:7:25",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5934,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "981:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5935,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5911,
                              "src": "995:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5936,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5913,
                              "src": "1000:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5937,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5915,
                              "src": "1005:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5928,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3779,
                            "src": "954:14:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 5938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "954:59:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5939,
                        "nodeType": "EmitStatement",
                        "src": "949:64:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 5943,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1108:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 5942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1100:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 5941,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1100:7:25",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 5944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1100:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 5945,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5911,
                              "src": "1114:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 5946,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5913,
                              "src": "1119:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5947,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5915,
                              "src": "1124:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 5948,
                                "name": "gasleft",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -7,
                                "src": "1133:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 5949,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1133:9:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 5950,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5917,
                              "src": "1144:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 5940,
                            "name": "_callonERC1155Received",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6453,
                            "src": "1077:22:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 5951,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1077:73:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5952,
                        "nodeType": "ExpressionStatement",
                        "src": "1077:73:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5909,
                    "nodeType": "StructuredDocumentation",
                    "src": "473:251:25",
                    "text": " @notice Mint _amount of tokens of a given id\n @param _to      The address to mint tokens to\n @param _id      Token id to mint\n @param _amount  The amount to be minted\n @param _data    Data to pass if receiver is contract"
                  },
                  "id": 5954,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_mint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5918,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5911,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 5954,
                        "src": "742:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5910,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "742:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5913,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 5954,
                        "src": "755:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5912,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "755:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5915,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 5954,
                        "src": "768:15:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "768:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5917,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 5954,
                        "src": "785:18:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5916,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "785:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "741:63:25"
                  },
                  "returnParameters": {
                    "id": 5919,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "820:0:25"
                  },
                  "scope": 6205,
                  "src": "727:428:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6110,
                    "nodeType": "Block",
                    "src": "1567:1394:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5973,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 5969,
                                  "name": "_ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5960,
                                  "src": "1581:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1581:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 5971,
                                  "name": "_amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5963,
                                  "src": "1596:8:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1596:15:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1581:30:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135354d696e744275726e5061636b656442616c616e6365235f62617463684d696e743a20494e56414c49445f4152524159535f4c454e475448",
                              "id": 5974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1613:64:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_e67c6311cced64ee495f02634ed596ee07530b3f0337a71fef484bc5b3d096cd",
                                "typeString": "literal_string \"ERC1155MintBurnPackedBalance#_batchMint: INVALID_ARRAYS_LENGTH\""
                              },
                              "value": "ERC1155MintBurnPackedBalance#_batchMint: INVALID_ARRAYS_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_e67c6311cced64ee495f02634ed596ee07530b3f0337a71fef484bc5b3d096cd",
                                "typeString": "literal_string \"ERC1155MintBurnPackedBalance#_batchMint: INVALID_ARRAYS_LENGTH\""
                              }
                            ],
                            "id": 5968,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1573:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 5975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1573:105:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5976,
                        "nodeType": "ExpressionStatement",
                        "src": "1573:105:25"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 5977,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5960,
                              "src": "1689:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 5978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1689:11:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 5979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1703:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "1689:15:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6084,
                        "nodeType": "IfStatement",
                        "src": "1685:1036:25",
                        "trueBody": {
                          "id": 6083,
                          "nodeType": "Block",
                          "src": "1706:1015:25",
                          "statements": [
                            {
                              "assignments": [
                                5982,
                                5984
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5982,
                                  "mutability": "mutable",
                                  "name": "bin",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6083,
                                  "src": "1783:11:25",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5981,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1783:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 5984,
                                  "mutability": "mutable",
                                  "name": "index",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6083,
                                  "src": "1796:13:25",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5983,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1796:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5990,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 5986,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5960,
                                      "src": "1827:4:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 5988,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 5987,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1832:1:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1827:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5985,
                                  "name": "getIDBinIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7120,
                                  "src": "1813:13:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256,uint256)"
                                  }
                                },
                                "id": 5989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1813:22:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1782:53:25"
                            },
                            {
                              "assignments": [
                                5992
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5992,
                                  "mutability": "mutable",
                                  "name": "balTo",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6083,
                                  "src": "1921:13:25",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5991,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1921:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6006,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "baseExpression": {
                                        "id": 5994,
                                        "name": "balances",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6246,
                                        "src": "1957:8:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                          "typeString": "mapping(address => mapping(uint256 => uint256))"
                                        }
                                      },
                                      "id": 5996,
                                      "indexExpression": {
                                        "id": 5995,
                                        "name": "_to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5957,
                                        "src": "1966:3:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1957:13:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                        "typeString": "mapping(uint256 => uint256)"
                                      }
                                    },
                                    "id": 5998,
                                    "indexExpression": {
                                      "id": 5997,
                                      "name": "bin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5982,
                                      "src": "1971:3:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1957:18:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 5999,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5984,
                                    "src": "1977:5:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 6000,
                                      "name": "_amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5963,
                                      "src": "1984:8:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 6002,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 6001,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1993:1:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1984:11:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6003,
                                      "name": "Operations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6240,
                                      "src": "1997:10:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                        "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                      }
                                    },
                                    "id": 6004,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Add",
                                    "nodeType": "MemberAccess",
                                    "src": "1997:14:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Operations_$6240",
                                      "typeString": "enum ERC1155PackedBalance.Operations"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_Operations_$6240",
                                      "typeString": "enum ERC1155PackedBalance.Operations"
                                    }
                                  ],
                                  "id": 5993,
                                  "name": "_viewUpdateBinValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7093,
                                  "src": "1937:19:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256,enum ERC1155PackedBalance.Operations) pure returns (uint256)"
                                  }
                                },
                                "id": 6005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1937:75:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1921:91:25"
                            },
                            {
                              "assignments": [
                                6008
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6008,
                                  "mutability": "mutable",
                                  "name": "nTransfer",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6083,
                                  "src": "2060:17:25",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6007,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2060:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6011,
                              "initialValue": {
                                "expression": {
                                  "id": 6009,
                                  "name": "_ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5960,
                                  "src": "2080:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 6010,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2080:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2060:31:25"
                            },
                            {
                              "assignments": [
                                6013
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6013,
                                  "mutability": "mutable",
                                  "name": "lastBin",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6083,
                                  "src": "2126:15:25",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6012,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2126:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6015,
                              "initialValue": {
                                "id": 6014,
                                "name": "bin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5982,
                                "src": "2144:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2126:21:25"
                            },
                            {
                              "body": {
                                "id": 6073,
                                "nodeType": "Block",
                                "src": "2196:436:25",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6034,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "components": [
                                          {
                                            "id": 6026,
                                            "name": "bin",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5982,
                                            "src": "2207:3:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 6027,
                                            "name": "index",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5984,
                                            "src": "2212:5:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 6028,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "2206:12:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "baseExpression": {
                                              "id": 6030,
                                              "name": "_ids",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5960,
                                              "src": "2235:4:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 6032,
                                            "indexExpression": {
                                              "id": 6031,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6017,
                                              "src": "2240:1:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2235:7:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 6029,
                                          "name": "getIDBinIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7120,
                                          "src": "2221:13:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                            "typeString": "function (uint256) pure returns (uint256,uint256)"
                                          }
                                        },
                                        "id": 6033,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2221:22:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256)"
                                        }
                                      },
                                      "src": "2206:37:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6035,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2206:37:25"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6038,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6036,
                                        "name": "bin",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5982,
                                        "src": "2280:3:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 6037,
                                        "name": "lastBin",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6013,
                                        "src": "2287:7:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2280:14:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 6060,
                                    "nodeType": "IfStatement",
                                    "src": "2276:234:25",
                                    "trueBody": {
                                      "id": 6059,
                                      "nodeType": "Block",
                                      "src": "2296:214:25",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 6045,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "baseExpression": {
                                                  "id": 6039,
                                                  "name": "balances",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6246,
                                                  "src": "2360:8:25",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                                    "typeString": "mapping(address => mapping(uint256 => uint256))"
                                                  }
                                                },
                                                "id": 6042,
                                                "indexExpression": {
                                                  "id": 6040,
                                                  "name": "_to",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5957,
                                                  "src": "2369:3:25",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "2360:13:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                  "typeString": "mapping(uint256 => uint256)"
                                                }
                                              },
                                              "id": 6043,
                                              "indexExpression": {
                                                "id": 6041,
                                                "name": "lastBin",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6013,
                                                "src": "2374:7:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "2360:22:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 6044,
                                              "name": "balTo",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5992,
                                              "src": "2385:5:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2360:30:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 6046,
                                          "nodeType": "ExpressionStatement",
                                          "src": "2360:30:25"
                                        },
                                        {
                                          "expression": {
                                            "id": 6053,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 6047,
                                              "name": "balTo",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5992,
                                              "src": "2402:5:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "baseExpression": {
                                                "baseExpression": {
                                                  "id": 6048,
                                                  "name": "balances",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6246,
                                                  "src": "2410:8:25",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                                    "typeString": "mapping(address => mapping(uint256 => uint256))"
                                                  }
                                                },
                                                "id": 6050,
                                                "indexExpression": {
                                                  "id": 6049,
                                                  "name": "_to",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5957,
                                                  "src": "2419:3:25",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "2410:13:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                  "typeString": "mapping(uint256 => uint256)"
                                                }
                                              },
                                              "id": 6052,
                                              "indexExpression": {
                                                "id": 6051,
                                                "name": "bin",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5982,
                                                "src": "2424:3:25",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "2410:18:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2402:26:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 6054,
                                          "nodeType": "ExpressionStatement",
                                          "src": "2402:26:25"
                                        },
                                        {
                                          "expression": {
                                            "id": 6057,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 6055,
                                              "name": "lastBin",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6013,
                                              "src": "2486:7:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 6056,
                                              "name": "bin",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5982,
                                              "src": "2496:3:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2486:13:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 6058,
                                          "nodeType": "ExpressionStatement",
                                          "src": "2486:13:25"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6071,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6061,
                                        "name": "balTo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5992,
                                        "src": "2553:5:25",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 6063,
                                            "name": "balTo",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5992,
                                            "src": "2581:5:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 6064,
                                            "name": "index",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5984,
                                            "src": "2588:5:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "baseExpression": {
                                              "id": 6065,
                                              "name": "_amounts",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5963,
                                              "src": "2595:8:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 6067,
                                            "indexExpression": {
                                              "id": 6066,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6017,
                                              "src": "2604:1:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "2595:11:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 6068,
                                              "name": "Operations",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6240,
                                              "src": "2608:10:25",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                                "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                              }
                                            },
                                            "id": 6069,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "Add",
                                            "nodeType": "MemberAccess",
                                            "src": "2608:14:25",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_Operations_$6240",
                                              "typeString": "enum ERC1155PackedBalance.Operations"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_enum$_Operations_$6240",
                                              "typeString": "enum ERC1155PackedBalance.Operations"
                                            }
                                          ],
                                          "id": 6062,
                                          "name": "_viewUpdateBinValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7093,
                                          "src": "2561:19:25",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256,uint256,enum ERC1155PackedBalance.Operations) pure returns (uint256)"
                                          }
                                        },
                                        "id": 6070,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2561:62:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2553:70:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6072,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2553:70:25"
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6022,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6020,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6017,
                                  "src": "2176:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 6021,
                                  "name": "nTransfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6008,
                                  "src": "2180:9:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2176:13:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6074,
                              "initializationExpression": {
                                "assignments": [
                                  6017
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 6017,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6074,
                                    "src": "2161:9:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 6016,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2161:7:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 6019,
                                "initialValue": {
                                  "hexValue": "31",
                                  "id": 6018,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2173:1:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "2161:13:25"
                              },
                              "loopExpression": {
                                "expression": {
                                  "id": 6024,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "2191:3:25",
                                  "subExpression": {
                                    "id": 6023,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6017,
                                    "src": "2191:1:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6025,
                                "nodeType": "ExpressionStatement",
                                "src": "2191:3:25"
                              },
                              "nodeType": "ForStatement",
                              "src": "2156:476:25"
                            },
                            {
                              "expression": {
                                "id": 6081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 6075,
                                      "name": "balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6246,
                                      "src": "2688:8:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => uint256))"
                                      }
                                    },
                                    "id": 6078,
                                    "indexExpression": {
                                      "id": 6076,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5957,
                                      "src": "2697:3:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2688:13:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 6079,
                                  "indexExpression": {
                                    "id": 6077,
                                    "name": "bin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5982,
                                    "src": "2702:3:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "2688:18:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6080,
                                  "name": "balTo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5992,
                                  "src": "2709:5:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "2688:26:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6082,
                              "nodeType": "ExpressionStatement",
                              "src": "2688:26:25"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6086,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2766:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6087,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2766:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 6090,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2786:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 6089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2778:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6088,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2778:7:25",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6091,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2778:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6092,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5957,
                              "src": "2792:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6093,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5960,
                              "src": "2797:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 6094,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5963,
                              "src": "2803:8:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 6085,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3794,
                            "src": "2752:13:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 6095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2752:60:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6096,
                        "nodeType": "EmitStatement",
                        "src": "2747:65:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 6100,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2912:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 6099,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2904:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6098,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2904:7:25",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2904:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6102,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5957,
                              "src": "2918:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6103,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5960,
                              "src": "2923:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 6104,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5963,
                              "src": "2929:8:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 6105,
                                "name": "gasleft",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -7,
                                "src": "2939:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 6106,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2939:9:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6107,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5965,
                              "src": "2950:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 6097,
                            "name": "_callonERC1155BatchReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6722,
                            "src": "2876:27:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,uint256,bytes memory)"
                            }
                          },
                          "id": 6108,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2876:80:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6109,
                        "nodeType": "ExpressionStatement",
                        "src": "2876:80:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5955,
                    "nodeType": "StructuredDocumentation",
                    "src": "1159:287:25",
                    "text": " @notice Mint tokens for each (_ids[i], _amounts[i]) pair\n @param _to       The address to mint tokens to\n @param _ids      Array of ids to mint\n @param _amounts  Array of amount of tokens to mint per id\n @param _data    Data to pass if receiver is contract"
                  },
                  "id": 6111,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_batchMint",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5966,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5957,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6111,
                        "src": "1469:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5956,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1469:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5960,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 6111,
                        "src": "1482:21:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5958,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1482:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5959,
                          "nodeType": "ArrayTypeName",
                          "src": "1482:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5963,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 6111,
                        "src": "1505:25:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5961,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1505:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5962,
                          "nodeType": "ArrayTypeName",
                          "src": "1505:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5965,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 6111,
                        "src": "1532:18:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5964,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1532:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1468:83:25"
                  },
                  "returnParameters": {
                    "id": 5967,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1567:0:25"
                  },
                  "scope": 6205,
                  "src": "1449:1512:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6141,
                    "nodeType": "Block",
                    "src": "3381:180:25",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6122,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6114,
                              "src": "3429:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6123,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6116,
                              "src": "3436:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6124,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6118,
                              "src": "3441:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 6125,
                                "name": "Operations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6240,
                                "src": "3450:10:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                  "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                }
                              },
                              "id": 6126,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Sub",
                              "nodeType": "MemberAccess",
                              "src": "3450:14:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Operations_$6240",
                                "typeString": "enum ERC1155PackedBalance.Operations"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_Operations_$6240",
                                "typeString": "enum ERC1155PackedBalance.Operations"
                              }
                            ],
                            "id": 6121,
                            "name": "_updateIDBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6979,
                            "src": "3412:16:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$__$",
                              "typeString": "function (address,uint256,uint256,enum ERC1155PackedBalance.Operations)"
                            }
                          },
                          "id": 6127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3412:53:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6128,
                        "nodeType": "ExpressionStatement",
                        "src": "3412:53:25"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6130,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3510:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3510:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6132,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6114,
                              "src": "3522:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 6135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3537:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 6134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3529:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6133,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3529:7:25",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3529:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6137,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6116,
                              "src": "3543:3:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6138,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6118,
                              "src": "3548:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6129,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3779,
                            "src": "3495:14:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 6139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3495:61:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6140,
                        "nodeType": "EmitStatement",
                        "src": "3490:66:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6112,
                    "nodeType": "StructuredDocumentation",
                    "src": "3102:201:25",
                    "text": " @notice Burn _amount of tokens of a given token id\n @param _from    The address to burn tokens from\n @param _id      Token id to burn\n @param _amount  The amount to be burned"
                  },
                  "id": 6142,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_burn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6119,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6114,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6142,
                        "src": "3321:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6113,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3321:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6116,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6142,
                        "src": "3336:11:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6115,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3336:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6118,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6142,
                        "src": "3349:15:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6117,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3349:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3320:45:25"
                  },
                  "returnParameters": {
                    "id": 6120,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3381:0:25"
                  },
                  "scope": 6205,
                  "src": "3306:255:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6203,
                    "nodeType": "Block",
                    "src": "4224:489:25",
                    "statements": [
                      {
                        "assignments": [
                          6155
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6155,
                            "mutability": "mutable",
                            "name": "nBurn",
                            "nodeType": "VariableDeclaration",
                            "scope": 6203,
                            "src": "4266:13:25",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6154,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4266:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6158,
                        "initialValue": {
                          "expression": {
                            "id": 6156,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6148,
                            "src": "4282:4:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 6157,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4282:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4266:27:25"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6160,
                                "name": "nBurn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6155,
                                "src": "4307:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 6161,
                                  "name": "_amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6151,
                                  "src": "4316:8:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 6162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "4316:15:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4307:24:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135354d696e744275726e5061636b656442616c616e63652362617463684275726e3a20494e56414c49445f4152524159535f4c454e475448",
                              "id": 6164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4333:63:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a27388676e05ca0a5d4e94e73fbe7474f0987122b1ce46c9ec91f15d7a7282dd",
                                "typeString": "literal_string \"ERC1155MintBurnPackedBalance#batchBurn: INVALID_ARRAYS_LENGTH\""
                              },
                              "value": "ERC1155MintBurnPackedBalance#batchBurn: INVALID_ARRAYS_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a27388676e05ca0a5d4e94e73fbe7474f0987122b1ce46c9ec91f15d7a7282dd",
                                "typeString": "literal_string \"ERC1155MintBurnPackedBalance#batchBurn: INVALID_ARRAYS_LENGTH\""
                              }
                            ],
                            "id": 6159,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "4299:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4299:98:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6166,
                        "nodeType": "ExpressionStatement",
                        "src": "4299:98:25"
                      },
                      {
                        "body": {
                          "id": 6189,
                          "nodeType": "Block",
                          "src": "4469:137:25",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6178,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6145,
                                    "src": "4526:5:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 6179,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6148,
                                      "src": "4535:4:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 6181,
                                    "indexExpression": {
                                      "id": 6180,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6168,
                                      "src": "4540:1:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4535:7:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 6182,
                                      "name": "_amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6151,
                                      "src": "4544:8:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 6184,
                                    "indexExpression": {
                                      "id": 6183,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6168,
                                      "src": "4553:1:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4544:11:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6185,
                                      "name": "Operations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6240,
                                      "src": "4557:10:25",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                        "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                      }
                                    },
                                    "id": 6186,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Sub",
                                    "nodeType": "MemberAccess",
                                    "src": "4557:14:25",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Operations_$6240",
                                      "typeString": "enum ERC1155PackedBalance.Operations"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_Operations_$6240",
                                      "typeString": "enum ERC1155PackedBalance.Operations"
                                    }
                                  ],
                                  "id": 6177,
                                  "name": "_updateIDBalance",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6979,
                                  "src": "4509:16:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$__$",
                                    "typeString": "function (address,uint256,uint256,enum ERC1155PackedBalance.Operations)"
                                  }
                                },
                                "id": 6187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4509:63:25",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6188,
                              "nodeType": "ExpressionStatement",
                              "src": "4509:63:25"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6173,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6171,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6168,
                            "src": "4453:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 6172,
                            "name": "nBurn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6155,
                            "src": "4457:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4453:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6190,
                        "initializationExpression": {
                          "assignments": [
                            6168
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 6168,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 6190,
                              "src": "4438:9:25",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 6167,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4438:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 6170,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 6169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4450:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4438:13:25"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 6175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "4464:3:25",
                            "subExpression": {
                              "id": 6174,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6168,
                              "src": "4464:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6176,
                          "nodeType": "ExpressionStatement",
                          "src": "4464:3:25"
                        },
                        "nodeType": "ForStatement",
                        "src": "4433:173:25"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6192,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4660:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4660:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6194,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6145,
                              "src": "4672:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "307830",
                                  "id": 6197,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4687:3:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 6196,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4679:7:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 6195,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4679:7:25",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 6198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4679:12:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6199,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6148,
                              "src": "4693:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 6200,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6151,
                              "src": "4699:8:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 6191,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3794,
                            "src": "4646:13:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 6201,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4646:62:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6202,
                        "nodeType": "EmitStatement",
                        "src": "4641:67:25"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6143,
                    "nodeType": "StructuredDocumentation",
                    "src": "3565:556:25",
                    "text": " @notice Burn tokens of given token id for each (_ids[i], _amounts[i]) pair\n @dev This batchBurn method does not implement the most efficient way of updating\n      balances to reduce the potential bug surface as this function is expected to\n      be less common than transfers. EIP-2200 makes this method significantly\n      more efficient already for packed balances.\n @param _from     The address to burn tokens from\n @param _ids      Array of token ids to burn\n @param _amounts  Array of the amount to be burned"
                  },
                  "id": 6204,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_batchBurn",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6152,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6145,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6204,
                        "src": "4144:13:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6144,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4144:7:25",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6148,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 6204,
                        "src": "4159:21:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6146,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4159:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6147,
                          "nodeType": "ArrayTypeName",
                          "src": "4159:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6151,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 6204,
                        "src": "4182:25:25",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6149,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "4182:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6150,
                          "nodeType": "ArrayTypeName",
                          "src": "4182:9:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4143:65:25"
                  },
                  "returnParameters": {
                    "id": 6153,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4224:0:25"
                  },
                  "scope": 6205,
                  "src": "4124:589:25",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 6206,
              "src": "270:4445:25"
            }
          ],
          "src": "39:4677:25"
        },
        "id": 25
      },
      "multi-token-standard/contracts/tokens/ERC1155PackedBalance/ERC1155PackedBalance.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/tokens/ERC1155PackedBalance/ERC1155PackedBalance.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ],
            "ERC1155PackedBalance": [
              7182
            ],
            "ERC165": [
              7229
            ],
            "IERC1155": [
              3875
            ],
            "IERC1155TokenReceiver": [
              3930
            ],
            "SafeMath": [
              7467
            ]
          },
          "id": 7183,
          "license": "Apache-2.0",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6207,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "39:22:26"
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/SafeMath.sol",
              "file": "../../utils/SafeMath.sol",
              "id": 6208,
              "nodeType": "ImportDirective",
              "scope": 7183,
              "sourceUnit": 7468,
              "src": "63:34:26",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155TokenReceiver.sol",
              "file": "../../interfaces/IERC1155TokenReceiver.sol",
              "id": 6209,
              "nodeType": "ImportDirective",
              "scope": 7183,
              "sourceUnit": 3931,
              "src": "98:52:26",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1155.sol",
              "file": "../../interfaces/IERC1155.sol",
              "id": 6210,
              "nodeType": "ImportDirective",
              "scope": 7183,
              "sourceUnit": 3876,
              "src": "151:39:26",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/Address.sol",
              "file": "../../utils/Address.sol",
              "id": 6211,
              "nodeType": "ImportDirective",
              "scope": 7183,
              "sourceUnit": 7212,
              "src": "191:33:26",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/ERC165.sol",
              "file": "../../utils/ERC165.sol",
              "id": 6212,
              "nodeType": "ImportDirective",
              "scope": 7183,
              "sourceUnit": 7230,
              "src": "225:32:26",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 6214,
                    "name": "IERC1155",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3875,
                    "src": "848:8:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC1155_$3875",
                      "typeString": "contract IERC1155"
                    }
                  },
                  "id": 6215,
                  "nodeType": "InheritanceSpecifier",
                  "src": "848:8:26"
                },
                {
                  "baseName": {
                    "id": 6216,
                    "name": "ERC165",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7229,
                    "src": "858:6:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ERC165_$7229",
                      "typeString": "contract ERC165"
                    }
                  },
                  "id": 6217,
                  "nodeType": "InheritanceSpecifier",
                  "src": "858:6:26"
                }
              ],
              "contractDependencies": [
                3875,
                7229
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 6213,
                "nodeType": "StructuredDocumentation",
                "src": "260:554:26",
                "text": " @dev Implementation of Multi-Token Standard contract. This implementation of the ERC-1155 standard\n      utilizes the fact that balances of different token ids can be concatenated within individual\n      uint256 storage slots. This allows the contract to batch transfer tokens more efficiently at\n      the cost of limiting the maximum token balance each address can hold. This limit is\n      2^IDS_BITS_SIZE, which can be adjusted below. In practice, using IDS_BITS_SIZE smaller than 16\n      did not lead to major efficiency gains."
              },
              "fullyImplemented": true,
              "id": 7182,
              "linearizedBaseContracts": [
                7182,
                7229,
                3875
              ],
              "name": "ERC1155PackedBalance",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 6220,
                  "libraryName": {
                    "id": 6218,
                    "name": "SafeMath",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7467,
                    "src": "875:8:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SafeMath_$7467",
                      "typeString": "library SafeMath"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "869:27:26",
                  "typeName": {
                    "id": 6219,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "888:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                {
                  "id": 6223,
                  "libraryName": {
                    "id": 6221,
                    "name": "Address",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7211,
                    "src": "905:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Address_$7211",
                      "typeString": "library Address"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "899:26:26",
                  "typeName": {
                    "id": 6222,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "917:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 6226,
                  "mutability": "constant",
                  "name": "ERC1155_RECEIVED_VALUE",
                  "nodeType": "VariableDeclaration",
                  "scope": 7182,
                  "src": "1085:60:26",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 6224,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1085:6:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786632336136653631",
                    "id": 6225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1135:10:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_4063915617_by_1",
                      "typeString": "int_const 4063915617"
                    },
                    "value": "0xf23a6e61"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6229,
                  "mutability": "constant",
                  "name": "ERC1155_BATCH_RECEIVED_VALUE",
                  "nodeType": "VariableDeclaration",
                  "scope": 7182,
                  "src": "1149:66:26",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 6227,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "1149:6:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30786263313937633831",
                    "id": 6228,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1205:10:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3155786881_by_1",
                      "typeString": "int_const 3155786881"
                    },
                    "value": "0xbc197c81"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6232,
                  "mutability": "constant",
                  "name": "IDS_BITS_SIZE",
                  "nodeType": "VariableDeclaration",
                  "scope": 7182,
                  "src": "1351:46:26",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6230,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1351:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "hexValue": "3332",
                    "id": 6231,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1395:2:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_32_by_1",
                      "typeString": "int_const 32"
                    },
                    "value": "32"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 6237,
                  "mutability": "constant",
                  "name": "IDS_PER_UINT256",
                  "nodeType": "VariableDeclaration",
                  "scope": 7182,
                  "src": "1461:63:26",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6233,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1461:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "leftExpression": {
                      "hexValue": "323536",
                      "id": 6234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1505:3:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_256_by_1",
                        "typeString": "int_const 256"
                      },
                      "value": "256"
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "id": 6235,
                      "name": "IDS_BITS_SIZE",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6232,
                      "src": "1511:13:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1505:19:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "canonicalName": "ERC1155PackedBalance.Operations",
                  "id": 6240,
                  "members": [
                    {
                      "id": 6238,
                      "name": "Add",
                      "nodeType": "EnumValue",
                      "src": "1613:3:26"
                    },
                    {
                      "id": 6239,
                      "name": "Sub",
                      "nodeType": "EnumValue",
                      "src": "1618:3:26"
                    }
                  ],
                  "name": "Operations",
                  "nodeType": "EnumDefinition",
                  "src": "1595:28:26"
                },
                {
                  "constant": false,
                  "id": 6246,
                  "mutability": "mutable",
                  "name": "balances",
                  "nodeType": "VariableDeclaration",
                  "scope": 7182,
                  "src": "1734:66:26",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(uint256 => uint256))"
                  },
                  "typeName": {
                    "id": 6245,
                    "keyType": {
                      "id": 6241,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1743:7:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1734:48:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                      "typeString": "mapping(address => mapping(uint256 => uint256))"
                    },
                    "valueType": {
                      "id": 6244,
                      "keyType": {
                        "id": 6242,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1762:7:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1754:27:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      },
                      "valueType": {
                        "id": 6243,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1773:7:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6252,
                  "mutability": "mutable",
                  "name": "operators",
                  "nodeType": "VariableDeclaration",
                  "scope": 7182,
                  "src": "1820:64:26",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                    "typeString": "mapping(address => mapping(address => bool))"
                  },
                  "typeName": {
                    "id": 6251,
                    "keyType": {
                      "id": 6247,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1829:7:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1820:45:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                      "typeString": "mapping(address => mapping(address => bool))"
                    },
                    "valueType": {
                      "id": 6250,
                      "keyType": {
                        "id": 6248,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1848:7:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "Mapping",
                      "src": "1840:24:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      },
                      "valueType": {
                        "id": 6249,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1859:4:26",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3817
                  ],
                  "body": {
                    "id": 6309,
                    "nodeType": "Block",
                    "src": "2486:472:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 6278,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 6271,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 6268,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "2521:3:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 6269,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "2521:10:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 6270,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6255,
                                      "src": "2535:5:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "2521:19:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 6272,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2520:21:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 6274,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6255,
                                    "src": "2562:5:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6275,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "2569:3:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6276,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "2569:10:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 6273,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6766,
                                  "src": "2545:16:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 6277,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2545:35:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2520:60:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52",
                              "id": 6279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2582:57:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5de16ffa31f425bcba19f887fa3f0405b804bfa07aeb79d0011a271ab960b473",
                                "typeString": "literal_string \"ERC1155PackedBalance#safeTransferFrom: INVALID_OPERATOR\""
                              },
                              "value": "ERC1155PackedBalance#safeTransferFrom: INVALID_OPERATOR"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5de16ffa31f425bcba19f887fa3f0405b804bfa07aeb79d0011a271ab960b473",
                                "typeString": "literal_string \"ERC1155PackedBalance#safeTransferFrom: INVALID_OPERATOR\""
                              }
                            ],
                            "id": 6267,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2512:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2512:128:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6281,
                        "nodeType": "ExpressionStatement",
                        "src": "2512:128:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6288,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6283,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6257,
                                "src": "2654:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 6286,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2669:1:26",
                                    "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": 6285,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2661:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6284,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2661:7:26",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6287,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2661:10:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2654:17:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135355061636b656442616c616e636523736166655472616e7366657246726f6d3a20494e56414c49445f524543495049454e54",
                              "id": 6289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2672:58:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c68a2f88978d8b339b6c0ee56093825f737a0bc6f2d3104ee016c2dda8754f88",
                                "typeString": "literal_string \"ERC1155PackedBalance#safeTransferFrom: INVALID_RECIPIENT\""
                              },
                              "value": "ERC1155PackedBalance#safeTransferFrom: INVALID_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c68a2f88978d8b339b6c0ee56093825f737a0bc6f2d3104ee016c2dda8754f88",
                                "typeString": "literal_string \"ERC1155PackedBalance#safeTransferFrom: INVALID_RECIPIENT\""
                              }
                            ],
                            "id": 6282,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2646:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2646:85:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6291,
                        "nodeType": "ExpressionStatement",
                        "src": "2646:85:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6293,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6255,
                              "src": "2856:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6294,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6257,
                              "src": "2863:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6295,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6259,
                              "src": "2868:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6296,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6261,
                              "src": "2873:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6292,
                            "name": "_safeTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6408,
                            "src": "2838:17:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256)"
                            }
                          },
                          "id": 6297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2838:43:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6298,
                        "nodeType": "ExpressionStatement",
                        "src": "2838:43:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6300,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6255,
                              "src": "2910:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6301,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6257,
                              "src": "2917:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6302,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6259,
                              "src": "2922:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6303,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6261,
                              "src": "2927:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 6304,
                                "name": "gasleft",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -7,
                                "src": "2936:7:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 6305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2936:9:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6306,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6263,
                              "src": "2947:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 6299,
                            "name": "_callonERC1155Received",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6453,
                            "src": "2887:22:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256,uint256,uint256,bytes memory)"
                            }
                          },
                          "id": 6307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2887:66:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6308,
                        "nodeType": "ExpressionStatement",
                        "src": "2887:66:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6253,
                    "nodeType": "StructuredDocumentation",
                    "src": "2011:346:26",
                    "text": " @notice Transfers amount amount of an _id from the _from address to the _to address specified\n @param _from    Source address\n @param _to      Target address\n @param _id      ID of the token type\n @param _amount  Transfered amount\n @param _data    Additional data with no specified format, sent in call to `_to`"
                  },
                  "functionSelector": "f242432a",
                  "id": 6310,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6265,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2475:8:26"
                  },
                  "parameters": {
                    "id": 6264,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6255,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6310,
                        "src": "2386:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6254,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2386:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6257,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6310,
                        "src": "2401:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6256,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2401:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6259,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6310,
                        "src": "2414:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6258,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2414:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6261,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6310,
                        "src": "2427:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6260,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2427:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6263,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 6310,
                        "src": "2444:18:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6262,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2444:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2385:78:26"
                  },
                  "returnParameters": {
                    "id": 6266,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2486:0:26"
                  },
                  "scope": 7182,
                  "src": "2360:598:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3833
                  ],
                  "body": {
                    "id": 6369,
                    "nodeType": "Block",
                    "src": "3595:396:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 6338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 6331,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 6328,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "3630:3:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 6329,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "3630:10:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 6330,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6313,
                                      "src": "3644:5:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "3630:19:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  }
                                ],
                                "id": 6332,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3629:21:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "||",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "id": 6334,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6313,
                                    "src": "3671:5:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6335,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "3678:3:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6336,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "3678:10:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "id": 6333,
                                  "name": "isApprovedForAll",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6766,
                                  "src": "3654:16:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$",
                                    "typeString": "function (address,address) view returns (bool)"
                                  }
                                },
                                "id": 6337,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3654:35:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "3629:60:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f4f50455241544f52",
                              "id": 6339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3691:62:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8fa056633155c2d101c74753e129ff95c397c33437181d62a822e737a99ab849",
                                "typeString": "literal_string \"ERC1155PackedBalance#safeBatchTransferFrom: INVALID_OPERATOR\""
                              },
                              "value": "ERC1155PackedBalance#safeBatchTransferFrom: INVALID_OPERATOR"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8fa056633155c2d101c74753e129ff95c397c33437181d62a822e737a99ab849",
                                "typeString": "literal_string \"ERC1155PackedBalance#safeBatchTransferFrom: INVALID_OPERATOR\""
                              }
                            ],
                            "id": 6327,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3621:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3621:133:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6341,
                        "nodeType": "ExpressionStatement",
                        "src": "3621:133:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 6348,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6343,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6315,
                                "src": "3768:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 6346,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3783:1:26",
                                    "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": 6345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3775:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 6344,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3775:7:26",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 6347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3775:10:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3768:17:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135355061636b656442616c616e6365237361666542617463685472616e7366657246726f6d3a20494e56414c49445f524543495049454e54",
                              "id": 6349,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3786:63:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1b2a4405a5f6274d17122790c38c2cb266d2cd5ffe85d5435abf32d0e0e2a97e",
                                "typeString": "literal_string \"ERC1155PackedBalance#safeBatchTransferFrom: INVALID_RECIPIENT\""
                              },
                              "value": "ERC1155PackedBalance#safeBatchTransferFrom: INVALID_RECIPIENT"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1b2a4405a5f6274d17122790c38c2cb266d2cd5ffe85d5435abf32d0e0e2a97e",
                                "typeString": "literal_string \"ERC1155PackedBalance#safeBatchTransferFrom: INVALID_RECIPIENT\""
                              }
                            ],
                            "id": 6342,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "3760:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6350,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3760:90:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6351,
                        "nodeType": "ExpressionStatement",
                        "src": "3760:90:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6353,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6313,
                              "src": "3880:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6354,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6315,
                              "src": "3887:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6355,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "3892:4:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 6356,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6321,
                              "src": "3898:8:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 6352,
                            "name": "_safeBatchTransferFrom",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6675,
                            "src": "3857:22:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 6357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3857:50:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6358,
                        "nodeType": "ExpressionStatement",
                        "src": "3857:50:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6360,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6313,
                              "src": "3941:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6361,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6315,
                              "src": "3948:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6362,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6318,
                              "src": "3953:4:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 6363,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6321,
                              "src": "3959:8:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 6364,
                                "name": "gasleft",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -7,
                                "src": "3969:7:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
                                  "typeString": "function () view returns (uint256)"
                                }
                              },
                              "id": 6365,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3969:9:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6366,
                              "name": "_data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6323,
                              "src": "3980:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 6359,
                            "name": "_callonERC1155BatchReceived",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6722,
                            "src": "3913:27:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,uint256[] memory,uint256[] memory,uint256,bytes memory)"
                            }
                          },
                          "id": 6367,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3913:73:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6368,
                        "nodeType": "ExpressionStatement",
                        "src": "3913:73:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6311,
                    "nodeType": "StructuredDocumentation",
                    "src": "2962:479:26",
                    "text": " @notice Send multiple types of Tokens from the _from address to the _to address (with safety call)\n @dev Arrays should be sorted so that all ids in a same storage slot are adjacent (more efficient)\n @param _from     Source addresses\n @param _to       Target addresses\n @param _ids      IDs of each token type\n @param _amounts  Transfer amounts per token type\n @param _data     Additional data with no specified format, sent in call to `_to`"
                  },
                  "functionSelector": "2eb2c2d6",
                  "id": 6370,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6325,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3584:8:26"
                  },
                  "parameters": {
                    "id": 6324,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6313,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6370,
                        "src": "3475:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6312,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3475:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6315,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6370,
                        "src": "3490:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6314,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3490:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6318,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 6370,
                        "src": "3503:21:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6316,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3503:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6317,
                          "nodeType": "ArrayTypeName",
                          "src": "3503:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6321,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 6370,
                        "src": "3526:25:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6319,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "3526:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6320,
                          "nodeType": "ArrayTypeName",
                          "src": "3526:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6323,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 6370,
                        "src": "3553:18:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6322,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3553:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3474:98:26"
                  },
                  "returnParameters": {
                    "id": 6326,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3595:0:26"
                  },
                  "scope": 7182,
                  "src": "3444:547:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6407,
                    "nodeType": "Block",
                    "src": "4481:285:26",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6383,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6373,
                              "src": "4526:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6384,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6377,
                              "src": "4533:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6385,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6379,
                              "src": "4538:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 6386,
                                "name": "Operations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6240,
                                "src": "4547:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                  "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                }
                              },
                              "id": 6387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Sub",
                              "nodeType": "MemberAccess",
                              "src": "4547:14:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Operations_$6240",
                                "typeString": "enum ERC1155PackedBalance.Operations"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_Operations_$6240",
                                "typeString": "enum ERC1155PackedBalance.Operations"
                              }
                            ],
                            "id": 6382,
                            "name": "_updateIDBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6979,
                            "src": "4509:16:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$__$",
                              "typeString": "function (address,uint256,uint256,enum ERC1155PackedBalance.Operations)"
                            }
                          },
                          "id": 6388,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4509:53:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6389,
                        "nodeType": "ExpressionStatement",
                        "src": "4509:53:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6391,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6375,
                              "src": "4616:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6392,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6377,
                              "src": "4623:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6393,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6379,
                              "src": "4628:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 6394,
                                "name": "Operations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6240,
                                "src": "4637:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                  "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                }
                              },
                              "id": 6395,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Add",
                              "nodeType": "MemberAccess",
                              "src": "4637:14:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Operations_$6240",
                                "typeString": "enum ERC1155PackedBalance.Operations"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_enum$_Operations_$6240",
                                "typeString": "enum ERC1155PackedBalance.Operations"
                              }
                            ],
                            "id": 6390,
                            "name": "_updateIDBalance",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6979,
                            "src": "4599:16:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$__$",
                              "typeString": "function (address,uint256,uint256,enum ERC1155PackedBalance.Operations)"
                            }
                          },
                          "id": 6396,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4599:53:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6397,
                        "nodeType": "ExpressionStatement",
                        "src": "4599:53:26"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6399,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4724:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4724:10:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6401,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6373,
                              "src": "4736:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6402,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6375,
                              "src": "4743:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6403,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6377,
                              "src": "4748:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6404,
                              "name": "_amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6379,
                              "src": "4753:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6398,
                            "name": "TransferSingle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3779,
                            "src": "4709:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (address,address,address,uint256,uint256)"
                            }
                          },
                          "id": 6405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4709:52:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6406,
                        "nodeType": "EmitStatement",
                        "src": "4704:57:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6371,
                    "nodeType": "StructuredDocumentation",
                    "src": "4117:261:26",
                    "text": " @notice Transfers amount amount of an _id from the _from address to the _to address specified\n @param _from    Source address\n @param _to      Target address\n @param _id      ID of the token type\n @param _amount  Transfered amount"
                  },
                  "id": 6408,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6380,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6373,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6408,
                        "src": "4408:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6372,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4408:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6375,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6408,
                        "src": "4423:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6374,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4423:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6377,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6408,
                        "src": "4436:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6376,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4436:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6379,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6408,
                        "src": "4449:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6378,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4449:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4407:58:26"
                  },
                  "returnParameters": {
                    "id": 6381,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4481:0:26"
                  },
                  "scope": 7182,
                  "src": "4381:385:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6452,
                    "nodeType": "Block",
                    "src": "5018:324:26",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6424,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6413,
                              "src": "5066:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 6425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7210,
                            "src": "5066:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 6426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5066:16:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6451,
                        "nodeType": "IfStatement",
                        "src": "5062:276:26",
                        "trueBody": {
                          "id": 6450,
                          "nodeType": "Block",
                          "src": "5084:254:26",
                          "statements": [
                            {
                              "assignments": [
                                6428
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6428,
                                  "mutability": "mutable",
                                  "name": "retval",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6450,
                                  "src": "5092:13:26",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 6427,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5092:6:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6442,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 6435,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "5168:3:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6436,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "5168:10:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 6437,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6411,
                                    "src": "5180:5:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6438,
                                    "name": "_id",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6415,
                                    "src": "5187:3:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 6439,
                                    "name": "_amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6417,
                                    "src": "5192:7:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 6440,
                                    "name": "_data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6421,
                                    "src": "5201:5:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 6430,
                                          "name": "_to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6413,
                                          "src": "5130:3:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 6429,
                                        "name": "IERC1155TokenReceiver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3930,
                                        "src": "5108:21:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3930_$",
                                          "typeString": "type(contract IERC1155TokenReceiver)"
                                        }
                                      },
                                      "id": 6431,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5108:26:26",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$3930",
                                        "typeString": "contract IERC1155TokenReceiver"
                                      }
                                    },
                                    "id": 6432,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "onERC1155Received",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3911,
                                    "src": "5108:44:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                    }
                                  },
                                  "id": 6434,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "gas"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 6433,
                                      "name": "_gasLimit",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6419,
                                      "src": "5157:9:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "src": "5108:59:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$gas",
                                    "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 6441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5108:99:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "5092:115:26"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 6446,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6444,
                                      "name": "retval",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6428,
                                      "src": "5223:6:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 6445,
                                      "name": "ERC1155_RECEIVED_VALUE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6226,
                                      "src": "5233:22:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "5223:32:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "455243313135355061636b656442616c616e6365235f63616c6c6f6e4552433131353552656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745",
                                    "id": 6447,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5257:73:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_ae97586a03f07b48efba6cfd21a9b4a52adb9850c74a8e2ae39274aadfacba3e",
                                      "typeString": "literal_string \"ERC1155PackedBalance#_callonERC1155Received: INVALID_ON_RECEIVE_MESSAGE\""
                                    },
                                    "value": "ERC1155PackedBalance#_callonERC1155Received: INVALID_ON_RECEIVE_MESSAGE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_ae97586a03f07b48efba6cfd21a9b4a52adb9850c74a8e2ae39274aadfacba3e",
                                      "typeString": "literal_string \"ERC1155PackedBalance#_callonERC1155Received: INVALID_ON_RECEIVE_MESSAGE\""
                                    }
                                  ],
                                  "id": 6443,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "5215:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 6448,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5215:116:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6449,
                              "nodeType": "ExpressionStatement",
                              "src": "5215:116:26"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6409,
                    "nodeType": "StructuredDocumentation",
                    "src": "4770:101:26",
                    "text": " @notice Verifies if receiver is contract and if so, calls (_to).onERC1155Received(...)"
                  },
                  "id": 6453,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callonERC1155Received",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6422,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6411,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6453,
                        "src": "4906:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6410,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4906:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6413,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6453,
                        "src": "4921:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6412,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4921:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6415,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6453,
                        "src": "4934:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6414,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4934:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6417,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6453,
                        "src": "4947:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6416,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4947:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6419,
                        "mutability": "mutable",
                        "name": "_gasLimit",
                        "nodeType": "VariableDeclaration",
                        "scope": 6453,
                        "src": "4964:17:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6418,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4964:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6421,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 6453,
                        "src": "4983:18:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6420,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4983:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4905:97:26"
                  },
                  "returnParameters": {
                    "id": 6423,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5018:0:26"
                  },
                  "scope": 7182,
                  "src": "4874:468:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6674,
                    "nodeType": "Block",
                    "src": "5867:1814:26",
                    "statements": [
                      {
                        "assignments": [
                          6468
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6468,
                            "mutability": "mutable",
                            "name": "nTransfer",
                            "nodeType": "VariableDeclaration",
                            "scope": 6674,
                            "src": "5873:17:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6467,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5873:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6471,
                        "initialValue": {
                          "expression": {
                            "id": 6469,
                            "name": "_ids",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6461,
                            "src": "5893:4:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 6470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "5893:11:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5873:31:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6476,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6473,
                                "name": "nTransfer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6468,
                                "src": "5951:9:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 6474,
                                  "name": "_amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6464,
                                  "src": "5964:8:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 6475,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "5964:15:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5951:28:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20494e56414c49445f4152524159535f4c454e475448",
                              "id": 6477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5981:68:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6614da7a93d631a735dbfcbaae70b497a5b1e055cc2b59a49eabda2c7fa02fdd",
                                "typeString": "literal_string \"ERC1155PackedBalance#_safeBatchTransferFrom: INVALID_ARRAYS_LENGTH\""
                              },
                              "value": "ERC1155PackedBalance#_safeBatchTransferFrom: INVALID_ARRAYS_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6614da7a93d631a735dbfcbaae70b497a5b1e055cc2b59a49eabda2c7fa02fdd",
                                "typeString": "literal_string \"ERC1155PackedBalance#_safeBatchTransferFrom: INVALID_ARRAYS_LENGTH\""
                              }
                            ],
                            "id": 6472,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "5943:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6478,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5943:107:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6479,
                        "nodeType": "ExpressionStatement",
                        "src": "5943:107:26"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 6486,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 6482,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6480,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6456,
                              "src": "6061:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 6481,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6458,
                              "src": "6070:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "6061:12:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6485,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 6483,
                              "name": "nTransfer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6468,
                              "src": "6077:9:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 6484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6089:1:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "6077:13:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "6061:29:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 6663,
                          "nodeType": "Block",
                          "src": "7414:180:26",
                          "statements": [
                            {
                              "body": {
                                "id": 6661,
                                "nodeType": "Block",
                                "src": "7462:126:26",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6657,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "arguments": [
                                              {
                                                "id": 6649,
                                                "name": "_from",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6456,
                                                "src": "7490:5:26",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "baseExpression": {
                                                  "id": 6650,
                                                  "name": "_ids",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6461,
                                                  "src": "7497:4:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                    "typeString": "uint256[] memory"
                                                  }
                                                },
                                                "id": 6652,
                                                "indexExpression": {
                                                  "id": 6651,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6638,
                                                  "src": "7502:1:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "7497:7:26",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "id": 6648,
                                              "name": "balanceOf",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6801,
                                              "src": "7480:9:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (address,uint256) view returns (uint256)"
                                              }
                                            },
                                            "id": 6653,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7480:25:26",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "baseExpression": {
                                              "id": 6654,
                                              "name": "_amounts",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6464,
                                              "src": "7509:8:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 6656,
                                            "indexExpression": {
                                              "id": 6655,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6638,
                                              "src": "7518:1:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7509:11:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "7480:40:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "hexValue": "455243313135355061636b656442616c616e6365235f7361666542617463685472616e7366657246726f6d3a20554e444552464c4f57",
                                          "id": 6658,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7522:56:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_a5b694f2d2e4ffb9825d48ee17c00a08c497ae1606335e3a4f2fdf535e888392",
                                            "typeString": "literal_string \"ERC1155PackedBalance#_safeBatchTransferFrom: UNDERFLOW\""
                                          },
                                          "value": "ERC1155PackedBalance#_safeBatchTransferFrom: UNDERFLOW"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_a5b694f2d2e4ffb9825d48ee17c00a08c497ae1606335e3a4f2fdf535e888392",
                                            "typeString": "literal_string \"ERC1155PackedBalance#_safeBatchTransferFrom: UNDERFLOW\""
                                          }
                                        ],
                                        "id": 6647,
                                        "name": "require",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [
                                          -18,
                                          -18
                                        ],
                                        "referencedDeclaration": -18,
                                        "src": "7472:7:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                          "typeString": "function (bool,string memory) pure"
                                        }
                                      },
                                      "id": 6659,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7472:107:26",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6660,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7472:107:26"
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6643,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6641,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6638,
                                  "src": "7442:1:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 6642,
                                  "name": "nTransfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6468,
                                  "src": "7446:9:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7442:13:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6662,
                              "initializationExpression": {
                                "assignments": [
                                  6638
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 6638,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6662,
                                    "src": "7427:9:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 6637,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7427:7:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 6640,
                                "initialValue": {
                                  "hexValue": "30",
                                  "id": 6639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7439:1:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "7427:13:26"
                              },
                              "loopExpression": {
                                "expression": {
                                  "id": 6645,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "7457:3:26",
                                  "subExpression": {
                                    "id": 6644,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6638,
                                    "src": "7457:1:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6646,
                                "nodeType": "ExpressionStatement",
                                "src": "7457:3:26"
                              },
                              "nodeType": "ForStatement",
                              "src": "7422:166:26"
                            }
                          ]
                        },
                        "id": 6664,
                        "nodeType": "IfStatement",
                        "src": "6057:1537:26",
                        "trueBody": {
                          "id": 6636,
                          "nodeType": "Block",
                          "src": "6092:1316:26",
                          "statements": [
                            {
                              "assignments": [
                                6488,
                                6490
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6488,
                                  "mutability": "mutable",
                                  "name": "bin",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6636,
                                  "src": "6169:11:26",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6487,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6169:7:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                },
                                {
                                  "constant": false,
                                  "id": 6490,
                                  "mutability": "mutable",
                                  "name": "index",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6636,
                                  "src": "6182:13:26",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6489,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6182:7:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6496,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "id": 6492,
                                      "name": "_ids",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6461,
                                      "src": "6213:4:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 6494,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 6493,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6218:1:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6213:7:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 6491,
                                  "name": "getIDBinIndex",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7120,
                                  "src": "6199:13:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (uint256) pure returns (uint256,uint256)"
                                  }
                                },
                                "id": 6495,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6199:22:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6168:53:26"
                            },
                            {
                              "assignments": [
                                6498
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6498,
                                  "mutability": "mutable",
                                  "name": "balFrom",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6636,
                                  "src": "6307:15:26",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6497,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6307:7:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6512,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "baseExpression": {
                                        "id": 6500,
                                        "name": "balances",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6246,
                                        "src": "6345:8:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                          "typeString": "mapping(address => mapping(uint256 => uint256))"
                                        }
                                      },
                                      "id": 6502,
                                      "indexExpression": {
                                        "id": 6501,
                                        "name": "_from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6456,
                                        "src": "6354:5:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6345:15:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                        "typeString": "mapping(uint256 => uint256)"
                                      }
                                    },
                                    "id": 6504,
                                    "indexExpression": {
                                      "id": 6503,
                                      "name": "bin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6488,
                                      "src": "6361:3:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6345:20:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 6505,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6490,
                                    "src": "6367:5:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 6506,
                                      "name": "_amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6464,
                                      "src": "6374:8:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 6508,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 6507,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6383:1:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6374:11:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6509,
                                      "name": "Operations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6240,
                                      "src": "6387:10:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                        "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                      }
                                    },
                                    "id": 6510,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Sub",
                                    "nodeType": "MemberAccess",
                                    "src": "6387:14:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Operations_$6240",
                                      "typeString": "enum ERC1155PackedBalance.Operations"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_Operations_$6240",
                                      "typeString": "enum ERC1155PackedBalance.Operations"
                                    }
                                  ],
                                  "id": 6499,
                                  "name": "_viewUpdateBinValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7093,
                                  "src": "6325:19:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256,enum ERC1155PackedBalance.Operations) pure returns (uint256)"
                                  }
                                },
                                "id": 6511,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6325:77:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6307:95:26"
                            },
                            {
                              "assignments": [
                                6514
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6514,
                                  "mutability": "mutable",
                                  "name": "balTo",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6636,
                                  "src": "6410:13:26",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6513,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6410:7:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6528,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "baseExpression": {
                                      "baseExpression": {
                                        "id": 6516,
                                        "name": "balances",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6246,
                                        "src": "6446:8:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                          "typeString": "mapping(address => mapping(uint256 => uint256))"
                                        }
                                      },
                                      "id": 6518,
                                      "indexExpression": {
                                        "id": 6517,
                                        "name": "_to",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6458,
                                        "src": "6455:3:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "6446:13:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                        "typeString": "mapping(uint256 => uint256)"
                                      }
                                    },
                                    "id": 6520,
                                    "indexExpression": {
                                      "id": 6519,
                                      "name": "bin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6488,
                                      "src": "6460:3:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6446:18:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 6521,
                                    "name": "index",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6490,
                                    "src": "6466:5:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "baseExpression": {
                                      "id": 6522,
                                      "name": "_amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6464,
                                      "src": "6473:8:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 6524,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 6523,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6482:1:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6473:11:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6525,
                                      "name": "Operations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6240,
                                      "src": "6486:10:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                        "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                      }
                                    },
                                    "id": 6526,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Add",
                                    "nodeType": "MemberAccess",
                                    "src": "6486:14:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_Operations_$6240",
                                      "typeString": "enum ERC1155PackedBalance.Operations"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_Operations_$6240",
                                      "typeString": "enum ERC1155PackedBalance.Operations"
                                    }
                                  ],
                                  "id": 6515,
                                  "name": "_viewUpdateBinValue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7093,
                                  "src": "6426:19:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256,enum ERC1155PackedBalance.Operations) pure returns (uint256)"
                                  }
                                },
                                "id": 6527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6426:75:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6410:91:26"
                            },
                            {
                              "assignments": [
                                6530
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6530,
                                  "mutability": "mutable",
                                  "name": "lastBin",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6636,
                                  "src": "6536:15:26",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6529,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6536:7:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6532,
                              "initialValue": {
                                "id": 6531,
                                "name": "bin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6488,
                                "src": "6554:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6536:21:26"
                            },
                            {
                              "body": {
                                "id": 6618,
                                "nodeType": "Block",
                                "src": "6606:609:26",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6551,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "components": [
                                          {
                                            "id": 6543,
                                            "name": "bin",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6488,
                                            "src": "6617:3:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 6544,
                                            "name": "index",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6490,
                                            "src": "6622:5:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 6545,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "TupleExpression",
                                        "src": "6616:12:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256)"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "baseExpression": {
                                              "id": 6547,
                                              "name": "_ids",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6461,
                                              "src": "6645:4:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 6549,
                                            "indexExpression": {
                                              "id": 6548,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6534,
                                              "src": "6650:1:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6645:7:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 6546,
                                          "name": "getIDBinIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7120,
                                          "src": "6631:13:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                            "typeString": "function (uint256) pure returns (uint256,uint256)"
                                          }
                                        },
                                        "id": 6550,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6631:22:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                          "typeString": "tuple(uint256,uint256)"
                                        }
                                      },
                                      "src": "6616:37:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 6552,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6616:37:26"
                                  },
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6555,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6553,
                                        "name": "bin",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6488,
                                        "src": "6690:3:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 6554,
                                        "name": "lastBin",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6530,
                                        "src": "6697:7:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "6690:14:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 6593,
                                    "nodeType": "IfStatement",
                                    "src": "6686:323:26",
                                    "trueBody": {
                                      "id": 6592,
                                      "nodeType": "Block",
                                      "src": "6706:303:26",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 6562,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "baseExpression": {
                                                  "id": 6556,
                                                  "name": "balances",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6246,
                                                  "src": "6770:8:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                                    "typeString": "mapping(address => mapping(uint256 => uint256))"
                                                  }
                                                },
                                                "id": 6559,
                                                "indexExpression": {
                                                  "id": 6557,
                                                  "name": "_from",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6456,
                                                  "src": "6779:5:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "6770:15:26",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                  "typeString": "mapping(uint256 => uint256)"
                                                }
                                              },
                                              "id": 6560,
                                              "indexExpression": {
                                                "id": 6558,
                                                "name": "lastBin",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6530,
                                                "src": "6786:7:26",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "6770:24:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 6561,
                                              "name": "balFrom",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6498,
                                              "src": "6797:7:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6770:34:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 6563,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6770:34:26"
                                        },
                                        {
                                          "expression": {
                                            "id": 6570,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "baseExpression": {
                                                "baseExpression": {
                                                  "id": 6564,
                                                  "name": "balances",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6246,
                                                  "src": "6816:8:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                                    "typeString": "mapping(address => mapping(uint256 => uint256))"
                                                  }
                                                },
                                                "id": 6567,
                                                "indexExpression": {
                                                  "id": 6565,
                                                  "name": "_to",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6458,
                                                  "src": "6825:3:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "6816:13:26",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                  "typeString": "mapping(uint256 => uint256)"
                                                }
                                              },
                                              "id": 6568,
                                              "indexExpression": {
                                                "id": 6566,
                                                "name": "lastBin",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6530,
                                                "src": "6830:7:26",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "nodeType": "IndexAccess",
                                              "src": "6816:22:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 6569,
                                              "name": "balTo",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6514,
                                              "src": "6841:5:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6816:30:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 6571,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6816:30:26"
                                        },
                                        {
                                          "expression": {
                                            "id": 6578,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 6572,
                                              "name": "balFrom",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6498,
                                              "src": "6859:7:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "baseExpression": {
                                                "baseExpression": {
                                                  "id": 6573,
                                                  "name": "balances",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6246,
                                                  "src": "6869:8:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                                    "typeString": "mapping(address => mapping(uint256 => uint256))"
                                                  }
                                                },
                                                "id": 6575,
                                                "indexExpression": {
                                                  "id": 6574,
                                                  "name": "_from",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6456,
                                                  "src": "6878:5:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "6869:15:26",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                  "typeString": "mapping(uint256 => uint256)"
                                                }
                                              },
                                              "id": 6577,
                                              "indexExpression": {
                                                "id": 6576,
                                                "name": "bin",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6488,
                                                "src": "6885:3:26",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "6869:20:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6859:30:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 6579,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6859:30:26"
                                        },
                                        {
                                          "expression": {
                                            "id": 6586,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 6580,
                                              "name": "balTo",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6514,
                                              "src": "6901:5:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "baseExpression": {
                                                "baseExpression": {
                                                  "id": 6581,
                                                  "name": "balances",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6246,
                                                  "src": "6909:8:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                                    "typeString": "mapping(address => mapping(uint256 => uint256))"
                                                  }
                                                },
                                                "id": 6583,
                                                "indexExpression": {
                                                  "id": 6582,
                                                  "name": "_to",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6458,
                                                  "src": "6918:3:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "6909:13:26",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                                  "typeString": "mapping(uint256 => uint256)"
                                                }
                                              },
                                              "id": 6585,
                                              "indexExpression": {
                                                "id": 6584,
                                                "name": "bin",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6488,
                                                "src": "6923:3:26",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "6909:18:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6901:26:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 6587,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6901:26:26"
                                        },
                                        {
                                          "expression": {
                                            "id": 6590,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 6588,
                                              "name": "lastBin",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6530,
                                              "src": "6985:7:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "id": 6589,
                                              "name": "bin",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6488,
                                              "src": "6995:3:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "6985:13:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 6591,
                                          "nodeType": "ExpressionStatement",
                                          "src": "6985:13:26"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6604,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6594,
                                        "name": "balFrom",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6498,
                                        "src": "7052:7:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 6596,
                                            "name": "balFrom",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6498,
                                            "src": "7082:7:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 6597,
                                            "name": "index",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6490,
                                            "src": "7091:5:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "baseExpression": {
                                              "id": 6598,
                                              "name": "_amounts",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6464,
                                              "src": "7098:8:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 6600,
                                            "indexExpression": {
                                              "id": 6599,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6534,
                                              "src": "7107:1:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7098:11:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 6601,
                                              "name": "Operations",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6240,
                                              "src": "7111:10:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                                "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                              }
                                            },
                                            "id": 6602,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "Sub",
                                            "nodeType": "MemberAccess",
                                            "src": "7111:14:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_Operations_$6240",
                                              "typeString": "enum ERC1155PackedBalance.Operations"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_enum$_Operations_$6240",
                                              "typeString": "enum ERC1155PackedBalance.Operations"
                                            }
                                          ],
                                          "id": 6595,
                                          "name": "_viewUpdateBinValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7093,
                                          "src": "7062:19:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256,uint256,enum ERC1155PackedBalance.Operations) pure returns (uint256)"
                                          }
                                        },
                                        "id": 6603,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7062:64:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7052:74:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6605,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7052:74:26"
                                  },
                                  {
                                    "expression": {
                                      "id": 6616,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6606,
                                        "name": "balTo",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6514,
                                        "src": "7136:5:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "arguments": [
                                          {
                                            "id": 6608,
                                            "name": "balTo",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6514,
                                            "src": "7164:5:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 6609,
                                            "name": "index",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6490,
                                            "src": "7171:5:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "baseExpression": {
                                              "id": 6610,
                                              "name": "_amounts",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6464,
                                              "src": "7178:8:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                                "typeString": "uint256[] memory"
                                              }
                                            },
                                            "id": 6612,
                                            "indexExpression": {
                                              "id": 6611,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6534,
                                              "src": "7187:1:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "7178:11:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 6613,
                                              "name": "Operations",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6240,
                                              "src": "7191:10:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                                "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                              }
                                            },
                                            "id": 6614,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "Add",
                                            "nodeType": "MemberAccess",
                                            "src": "7191:14:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_Operations_$6240",
                                              "typeString": "enum ERC1155PackedBalance.Operations"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_enum$_Operations_$6240",
                                              "typeString": "enum ERC1155PackedBalance.Operations"
                                            }
                                          ],
                                          "id": 6607,
                                          "name": "_viewUpdateBinValue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7093,
                                          "src": "7144:19:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$_t_uint256_$",
                                            "typeString": "function (uint256,uint256,uint256,enum ERC1155PackedBalance.Operations) pure returns (uint256)"
                                          }
                                        },
                                        "id": 6615,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "7144:62:26",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7136:70:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6617,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7136:70:26"
                                  }
                                ]
                              },
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6539,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6537,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6534,
                                  "src": "6586:1:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 6538,
                                  "name": "nTransfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6468,
                                  "src": "6590:9:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6586:13:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6619,
                              "initializationExpression": {
                                "assignments": [
                                  6534
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 6534,
                                    "mutability": "mutable",
                                    "name": "i",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6619,
                                    "src": "6571:9:26",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 6533,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6571:7:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 6536,
                                "initialValue": {
                                  "hexValue": "31",
                                  "id": 6535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6583:1:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "6571:13:26"
                              },
                              "loopExpression": {
                                "expression": {
                                  "id": 6541,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "++",
                                  "prefix": false,
                                  "src": "6601:3:26",
                                  "subExpression": {
                                    "id": 6540,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6534,
                                    "src": "6601:1:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 6542,
                                "nodeType": "ExpressionStatement",
                                "src": "6601:3:26"
                              },
                              "nodeType": "ForStatement",
                              "src": "6566:649:26"
                            },
                            {
                              "expression": {
                                "id": 6626,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 6620,
                                      "name": "balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6246,
                                      "src": "7271:8:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => uint256))"
                                      }
                                    },
                                    "id": 6623,
                                    "indexExpression": {
                                      "id": 6621,
                                      "name": "_from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6456,
                                      "src": "7280:5:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7271:15:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 6624,
                                  "indexExpression": {
                                    "id": 6622,
                                    "name": "bin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6488,
                                    "src": "7287:3:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7271:20:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6625,
                                  "name": "balFrom",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6498,
                                  "src": "7294:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7271:30:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6627,
                              "nodeType": "ExpressionStatement",
                              "src": "7271:30:26"
                            },
                            {
                              "expression": {
                                "id": 6634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 6628,
                                      "name": "balances",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6246,
                                      "src": "7309:8:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => uint256))"
                                      }
                                    },
                                    "id": 6631,
                                    "indexExpression": {
                                      "id": 6629,
                                      "name": "_to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6458,
                                      "src": "7318:3:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7309:13:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                      "typeString": "mapping(uint256 => uint256)"
                                    }
                                  },
                                  "id": 6632,
                                  "indexExpression": {
                                    "id": 6630,
                                    "name": "bin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6488,
                                    "src": "7323:3:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "7309:18:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "id": 6633,
                                  "name": "balTo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6514,
                                  "src": "7330:5:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7309:26:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6635,
                              "nodeType": "ExpressionStatement",
                              "src": "7309:26:26"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6666,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "7637:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6667,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "7637:10:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6668,
                              "name": "_from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6456,
                              "src": "7649:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6669,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6458,
                              "src": "7656:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6670,
                              "name": "_ids",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6461,
                              "src": "7661:4:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            {
                              "id": 6671,
                              "name": "_amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6464,
                              "src": "7667:8:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            ],
                            "id": 6665,
                            "name": "TransferBatch",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3794,
                            "src": "7623:13:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)"
                            }
                          },
                          "id": 6672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7623:53:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6673,
                        "nodeType": "EmitStatement",
                        "src": "7618:58:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6454,
                    "nodeType": "StructuredDocumentation",
                    "src": "5346:393:26",
                    "text": " @notice Send multiple types of Tokens from the _from address to the _to address (with safety call)\n @dev Arrays should be sorted so that all ids in a same storage slot are adjacent (more efficient)\n @param _from     Source addresses\n @param _to       Target addresses\n @param _ids      IDs of each token type\n @param _amounts  Transfer amounts per token type"
                  },
                  "id": 6675,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_safeBatchTransferFrom",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6465,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6456,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6675,
                        "src": "5774:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6455,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5774:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6458,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6675,
                        "src": "5789:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6457,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5789:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6461,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 6675,
                        "src": "5802:21:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6459,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5802:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6460,
                          "nodeType": "ArrayTypeName",
                          "src": "5802:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6464,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 6675,
                        "src": "5825:25:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6462,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "5825:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6463,
                          "nodeType": "ArrayTypeName",
                          "src": "5825:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5773:78:26"
                  },
                  "returnParameters": {
                    "id": 6466,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5867:0:26"
                  },
                  "scope": 7182,
                  "src": "5742:1939:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6721,
                    "nodeType": "Block",
                    "src": "7963:347:26",
                    "statements": [
                      {
                        "condition": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6693,
                              "name": "_to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6680,
                              "src": "8015:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 6694,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7210,
                            "src": "8015:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 6695,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8015:16:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6720,
                        "nodeType": "IfStatement",
                        "src": "8011:295:26",
                        "trueBody": {
                          "id": 6719,
                          "nodeType": "Block",
                          "src": "8033:273:26",
                          "statements": [
                            {
                              "assignments": [
                                6697
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6697,
                                  "mutability": "mutable",
                                  "name": "retval",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6719,
                                  "src": "8041:13:26",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 6696,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "8041:6:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6711,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 6704,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "8123:3:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 6705,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "8123:10:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 6706,
                                    "name": "_from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6678,
                                    "src": "8135:5:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 6707,
                                    "name": "_ids",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6683,
                                    "src": "8142:4:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 6708,
                                    "name": "_amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6686,
                                    "src": "8148:8:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  {
                                    "id": 6709,
                                    "name": "_data",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6690,
                                    "src": "8158:5:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 6699,
                                          "name": "_to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6680,
                                          "src": "8079:3:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 6698,
                                        "name": "IERC1155TokenReceiver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3930,
                                        "src": "8057:21:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC1155TokenReceiver_$3930_$",
                                          "typeString": "type(contract IERC1155TokenReceiver)"
                                        }
                                      },
                                      "id": 6700,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8057:26:26",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC1155TokenReceiver_$3930",
                                        "typeString": "contract IERC1155TokenReceiver"
                                      }
                                    },
                                    "id": 6701,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "onERC1155BatchReceived",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3929,
                                    "src": "8057:49:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                    }
                                  },
                                  "id": 6703,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "names": [
                                    "gas"
                                  ],
                                  "nodeType": "FunctionCallOptions",
                                  "options": [
                                    {
                                      "id": 6702,
                                      "name": "_gasLimit",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6688,
                                      "src": "8112:9:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "src": "8057:65:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$gas",
                                    "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)"
                                  }
                                },
                                "id": 6710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8057:107:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "8041:123:26"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    },
                                    "id": 6715,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6713,
                                      "name": "retval",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6697,
                                      "src": "8180:6:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 6714,
                                      "name": "ERC1155_BATCH_RECEIVED_VALUE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6229,
                                      "src": "8190:28:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes4",
                                        "typeString": "bytes4"
                                      }
                                    },
                                    "src": "8180:38:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "455243313135355061636b656442616c616e6365235f63616c6c6f6e45524331313535426174636852656365697665643a20494e56414c49445f4f4e5f524543454956455f4d455353414745",
                                    "id": 6716,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "8220:78:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_67d9a601de2851cce384dc073fdfc501fdf156b6861eddc579f1840cb500407d",
                                      "typeString": "literal_string \"ERC1155PackedBalance#_callonERC1155BatchReceived: INVALID_ON_RECEIVE_MESSAGE\""
                                    },
                                    "value": "ERC1155PackedBalance#_callonERC1155BatchReceived: INVALID_ON_RECEIVE_MESSAGE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_67d9a601de2851cce384dc073fdfc501fdf156b6861eddc579f1840cb500407d",
                                      "typeString": "literal_string \"ERC1155PackedBalance#_callonERC1155BatchReceived: INVALID_ON_RECEIVE_MESSAGE\""
                                    }
                                  ],
                                  "id": 6712,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "8172:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 6717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8172:127:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6718,
                              "nodeType": "ExpressionStatement",
                              "src": "8172:127:26"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6676,
                    "nodeType": "StructuredDocumentation",
                    "src": "7685:106:26",
                    "text": " @notice Verifies if receiver is contract and if so, calls (_to).onERC1155BatchReceived(...)"
                  },
                  "id": 6722,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callonERC1155BatchReceived",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6691,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6678,
                        "mutability": "mutable",
                        "name": "_from",
                        "nodeType": "VariableDeclaration",
                        "scope": 6722,
                        "src": "7831:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6677,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7831:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6680,
                        "mutability": "mutable",
                        "name": "_to",
                        "nodeType": "VariableDeclaration",
                        "scope": 6722,
                        "src": "7846:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6679,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7846:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6683,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 6722,
                        "src": "7859:21:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6681,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7859:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6682,
                          "nodeType": "ArrayTypeName",
                          "src": "7859:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6686,
                        "mutability": "mutable",
                        "name": "_amounts",
                        "nodeType": "VariableDeclaration",
                        "scope": 6722,
                        "src": "7882:25:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6684,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "7882:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6685,
                          "nodeType": "ArrayTypeName",
                          "src": "7882:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6688,
                        "mutability": "mutable",
                        "name": "_gasLimit",
                        "nodeType": "VariableDeclaration",
                        "scope": 6722,
                        "src": "7909:17:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6687,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7909:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6690,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 6722,
                        "src": "7928:18:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 6689,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "7928:5:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7830:117:26"
                  },
                  "returnParameters": {
                    "id": 6692,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "7963:0:26"
                  },
                  "scope": 7182,
                  "src": "7794:516:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3864
                  ],
                  "body": {
                    "id": 6747,
                    "nodeType": "Block",
                    "src": "8793:144:26",
                    "statements": [
                      {
                        "expression": {
                          "id": 6738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 6731,
                                "name": "operators",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6252,
                                "src": "8829:9:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                  "typeString": "mapping(address => mapping(address => bool))"
                                }
                              },
                              "id": 6735,
                              "indexExpression": {
                                "expression": {
                                  "id": 6732,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "8839:3:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 6733,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "8839:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8829:21:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 6736,
                            "indexExpression": {
                              "id": 6734,
                              "name": "_operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6725,
                              "src": "8851:9:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8829:32:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6737,
                            "name": "_approved",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6727,
                            "src": "8864:9:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8829:44:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6739,
                        "nodeType": "ExpressionStatement",
                        "src": "8829:44:26"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 6741,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "8899:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6742,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "8899:10:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 6743,
                              "name": "_operator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6725,
                              "src": "8911:9:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6744,
                              "name": "_approved",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6727,
                              "src": "8922:9:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6740,
                            "name": "ApprovalForAll",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3803,
                            "src": "8884:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,address,bool)"
                            }
                          },
                          "id": 6745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8884:48:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6746,
                        "nodeType": "EmitStatement",
                        "src": "8879:53:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6723,
                    "nodeType": "StructuredDocumentation",
                    "src": "8436:268:26",
                    "text": " @notice Enable or disable approval for a third party (\"operator\") to manage all of caller's tokens\n @param _operator  Address to add to the set of authorized operators\n @param _approved  True if the operator is approved, false to revoke approval"
                  },
                  "functionSelector": "a22cb465",
                  "id": 6748,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "setApprovalForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6729,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8782:8:26"
                  },
                  "parameters": {
                    "id": 6728,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6725,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 6748,
                        "src": "8734:17:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6724,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8734:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6727,
                        "mutability": "mutable",
                        "name": "_approved",
                        "nodeType": "VariableDeclaration",
                        "scope": 6748,
                        "src": "8753:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6726,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8753:4:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8733:35:26"
                  },
                  "returnParameters": {
                    "id": 6730,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8793:0:26"
                  },
                  "scope": 7182,
                  "src": "8707:230:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    3874
                  ],
                  "body": {
                    "id": 6765,
                    "nodeType": "Block",
                    "src": "9313:46:26",
                    "statements": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 6759,
                              "name": "operators",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6252,
                              "src": "9326:9:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$",
                                "typeString": "mapping(address => mapping(address => bool))"
                              }
                            },
                            "id": 6761,
                            "indexExpression": {
                              "id": 6760,
                              "name": "_owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6751,
                              "src": "9336:6:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9326:17:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                              "typeString": "mapping(address => bool)"
                            }
                          },
                          "id": 6763,
                          "indexExpression": {
                            "id": 6762,
                            "name": "_operator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6753,
                            "src": "9344:9:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "9326:28:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 6758,
                        "id": 6764,
                        "nodeType": "Return",
                        "src": "9319:35:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6749,
                    "nodeType": "StructuredDocumentation",
                    "src": "8941:255:26",
                    "text": " @notice Queries the approval status of an operator for a given owner\n @param _owner     The owner of the Tokens\n @param _operator  Address of authorized operator\n @return isOperator True if the operator is approved, false if not"
                  },
                  "functionSelector": "e985e9c5",
                  "id": 6766,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isApprovedForAll",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6755,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9271:8:26"
                  },
                  "parameters": {
                    "id": 6754,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6751,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 6766,
                        "src": "9225:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6750,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9225:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6753,
                        "mutability": "mutable",
                        "name": "_operator",
                        "nodeType": "VariableDeclaration",
                        "scope": 6766,
                        "src": "9241:17:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6752,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9241:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9224:35:26"
                  },
                  "returnParameters": {
                    "id": 6758,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6757,
                        "mutability": "mutable",
                        "name": "isOperator",
                        "nodeType": "VariableDeclaration",
                        "scope": 6766,
                        "src": "9294:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6756,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9294:4:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9293:17:26"
                  },
                  "scope": 7182,
                  "src": "9199:160:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3843
                  ],
                  "body": {
                    "id": 6800,
                    "nodeType": "Block",
                    "src": "9792:168:26",
                    "statements": [
                      {
                        "assignments": [
                          6778
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6778,
                            "mutability": "mutable",
                            "name": "bin",
                            "nodeType": "VariableDeclaration",
                            "scope": 6800,
                            "src": "9798:11:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6777,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9798:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6779,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9798:11:26"
                      },
                      {
                        "assignments": [
                          6781
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6781,
                            "mutability": "mutable",
                            "name": "index",
                            "nodeType": "VariableDeclaration",
                            "scope": 6800,
                            "src": "9815:13:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6780,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "9815:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6782,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9815:13:26"
                      },
                      {
                        "expression": {
                          "id": 6789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 6783,
                                "name": "bin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6778,
                                "src": "9867:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 6784,
                                "name": "index",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6781,
                                "src": "9872:5:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 6785,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "9866:12:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6787,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6771,
                                "src": "9895:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6786,
                              "name": "getIDBinIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7120,
                              "src": "9881:13:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256,uint256)"
                              }
                            },
                            "id": 6788,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9881:18:26",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "9866:33:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6790,
                        "nodeType": "ExpressionStatement",
                        "src": "9866:33:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 6792,
                                  "name": "balances",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6246,
                                  "src": "9926:8:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => uint256))"
                                  }
                                },
                                "id": 6794,
                                "indexExpression": {
                                  "id": 6793,
                                  "name": "_owner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6769,
                                  "src": "9935:6:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9926:16:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 6796,
                              "indexExpression": {
                                "id": 6795,
                                "name": "bin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6778,
                                "src": "9943:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9926:21:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6797,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6781,
                              "src": "9949:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6791,
                            "name": "getValueInBin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7156,
                            "src": "9912:13:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 6798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9912:43:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6776,
                        "id": 6799,
                        "nodeType": "Return",
                        "src": "9905:50:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6767,
                    "nodeType": "StructuredDocumentation",
                    "src": "9485:211:26",
                    "text": " @notice Get the balance of an account's Tokens\n @param _owner  The address of the token holder\n @param _id     ID of the Token\n @return The _owner's balance of the Token type requested"
                  },
                  "functionSelector": "00fdd58e",
                  "id": 6801,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOf",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6773,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9758:8:26"
                  },
                  "parameters": {
                    "id": 6772,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6769,
                        "mutability": "mutable",
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 6801,
                        "src": "9718:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6768,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9718:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6771,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6801,
                        "src": "9734:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6770,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9734:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9717:29:26"
                  },
                  "returnParameters": {
                    "id": 6776,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6775,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 6801,
                        "src": "9781:7:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6774,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9781:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9780:9:26"
                  },
                  "scope": 7182,
                  "src": "9699:261:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3856
                  ],
                  "body": {
                    "id": 6934,
                    "nodeType": "Block",
                    "src": "10445:886:26",
                    "statements": [
                      {
                        "assignments": [
                          6816
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6816,
                            "mutability": "mutable",
                            "name": "n_owners",
                            "nodeType": "VariableDeclaration",
                            "scope": 6934,
                            "src": "10451:16:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6815,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10451:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6819,
                        "initialValue": {
                          "expression": {
                            "id": 6817,
                            "name": "_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6805,
                            "src": "10470:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "id": 6818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "10470:14:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10451:33:26"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6821,
                                "name": "n_owners",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6816,
                                "src": "10498:8:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 6822,
                                  "name": "_ids",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6808,
                                  "src": "10510:4:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 6823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "10510:11:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10498:23:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "455243313135355061636b656442616c616e63652362616c616e63654f6642617463683a20494e56414c49445f41525241595f4c454e475448",
                              "id": 6825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10523:59:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0873520dfe3e207d0e604312030f6a61fb60bb2fb272dd4f121fe5c9126836f9",
                                "typeString": "literal_string \"ERC1155PackedBalance#balanceOfBatch: INVALID_ARRAY_LENGTH\""
                              },
                              "value": "ERC1155PackedBalance#balanceOfBatch: INVALID_ARRAY_LENGTH"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0873520dfe3e207d0e604312030f6a61fb60bb2fb272dd4f121fe5c9126836f9",
                                "typeString": "literal_string \"ERC1155PackedBalance#balanceOfBatch: INVALID_ARRAY_LENGTH\""
                              }
                            ],
                            "id": 6820,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "10490:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6826,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10490:93:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6827,
                        "nodeType": "ExpressionStatement",
                        "src": "10490:93:26"
                      },
                      {
                        "assignments": [
                          6829,
                          6831
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6829,
                            "mutability": "mutable",
                            "name": "bin",
                            "nodeType": "VariableDeclaration",
                            "scope": 6934,
                            "src": "10611:11:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6828,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10611:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6831,
                            "mutability": "mutable",
                            "name": "index",
                            "nodeType": "VariableDeclaration",
                            "scope": 6934,
                            "src": "10624:13:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6830,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10624:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6837,
                        "initialValue": {
                          "arguments": [
                            {
                              "baseExpression": {
                                "id": 6833,
                                "name": "_ids",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6808,
                                "src": "10655:4:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 6835,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 6834,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10660:1:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10655:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6832,
                            "name": "getIDBinIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7120,
                            "src": "10641:13:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256,uint256)"
                            }
                          },
                          "id": 6836,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10641:22:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10610:53:26"
                      },
                      {
                        "assignments": [
                          6839
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6839,
                            "mutability": "mutable",
                            "name": "balance_bin",
                            "nodeType": "VariableDeclaration",
                            "scope": 6934,
                            "src": "10669:19:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6838,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10669:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6847,
                        "initialValue": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 6840,
                              "name": "balances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6246,
                              "src": "10691:8:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(uint256 => uint256))"
                              }
                            },
                            "id": 6844,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 6841,
                                "name": "_owners",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6805,
                                "src": "10700:7:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 6843,
                              "indexExpression": {
                                "hexValue": "30",
                                "id": 6842,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10708:1:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10700:10:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10691:20:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 6846,
                          "indexExpression": {
                            "id": 6845,
                            "name": "bin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6829,
                            "src": "10712:3:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10691:25:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10669:47:26"
                      },
                      {
                        "assignments": [
                          6849
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6849,
                            "mutability": "mutable",
                            "name": "last_bin",
                            "nodeType": "VariableDeclaration",
                            "scope": 6934,
                            "src": "10722:16:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6848,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "10722:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6851,
                        "initialValue": {
                          "id": 6850,
                          "name": "bin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6829,
                          "src": "10741:3:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10722:22:26"
                      },
                      {
                        "assignments": [
                          6856
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6856,
                            "mutability": "mutable",
                            "name": "batchBalances",
                            "nodeType": "VariableDeclaration",
                            "scope": 6934,
                            "src": "10773:30:26",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6854,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10773:7:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6855,
                              "nodeType": "ArrayTypeName",
                              "src": "10773:9:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6862,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6860,
                              "name": "n_owners",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6816,
                              "src": "10820:8:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6859,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "10806:13:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6857,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10810:7:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6858,
                              "nodeType": "ArrayTypeName",
                              "src": "10810:9:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 6861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10806:23:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10773:56:26"
                      },
                      {
                        "expression": {
                          "id": 6870,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6863,
                              "name": "batchBalances",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6856,
                              "src": "10835:13:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 6865,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 6864,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10849:1:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "10835:16:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6867,
                                "name": "balance_bin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6839,
                                "src": "10868:11:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 6868,
                                "name": "index",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6831,
                                "src": "10881:5:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6866,
                              "name": "getValueInBin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7156,
                              "src": "10854:13:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6869,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10854:33:26",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10835:52:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6871,
                        "nodeType": "ExpressionStatement",
                        "src": "10835:52:26"
                      },
                      {
                        "body": {
                          "id": 6930,
                          "nodeType": "Block",
                          "src": "10977:323:26",
                          "statements": [
                            {
                              "expression": {
                                "id": 6890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "components": [
                                    {
                                      "id": 6882,
                                      "name": "bin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6829,
                                      "src": "10986:3:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 6883,
                                      "name": "index",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6831,
                                      "src": "10991:5:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6884,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "TupleExpression",
                                  "src": "10985:12:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "baseExpression": {
                                        "id": 6886,
                                        "name": "_ids",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6808,
                                        "src": "11014:4:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                          "typeString": "uint256[] memory"
                                        }
                                      },
                                      "id": 6888,
                                      "indexExpression": {
                                        "id": 6887,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6873,
                                        "src": "11019:1:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "11014:7:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 6885,
                                    "name": "getIDBinIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7120,
                                    "src": "11000:13:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256,uint256)"
                                    }
                                  },
                                  "id": 6889,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11000:22:26",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                    "typeString": "tuple(uint256,uint256)"
                                  }
                                },
                                "src": "10985:37:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6891,
                              "nodeType": "ExpressionStatement",
                              "src": "10985:37:26"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 6904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6894,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 6892,
                                    "name": "bin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6829,
                                    "src": "11104:3:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "id": 6893,
                                    "name": "last_bin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6849,
                                    "src": "11111:8:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "11104:15:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "||",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 6903,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 6895,
                                      "name": "_owners",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6805,
                                      "src": "11123:7:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 6899,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6898,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 6896,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6873,
                                        "src": "11131:1:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 6897,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11133:1:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "11131:3:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11123:12:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "baseExpression": {
                                      "id": 6900,
                                      "name": "_owners",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6805,
                                      "src": "11139:7:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 6902,
                                    "indexExpression": {
                                      "id": 6901,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6873,
                                      "src": "11147:1:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11139:10:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "11123:26:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "11104:45:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6920,
                              "nodeType": "IfStatement",
                              "src": "11100:133:26",
                              "trueBody": {
                                "id": 6919,
                                "nodeType": "Block",
                                "src": "11151:82:26",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 6913,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6905,
                                        "name": "balance_bin",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6839,
                                        "src": "11161:11:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "baseExpression": {
                                          "baseExpression": {
                                            "id": 6906,
                                            "name": "balances",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6246,
                                            "src": "11175:8:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                              "typeString": "mapping(address => mapping(uint256 => uint256))"
                                            }
                                          },
                                          "id": 6910,
                                          "indexExpression": {
                                            "baseExpression": {
                                              "id": 6907,
                                              "name": "_owners",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6805,
                                              "src": "11184:7:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                                "typeString": "address[] memory"
                                              }
                                            },
                                            "id": 6909,
                                            "indexExpression": {
                                              "id": 6908,
                                              "name": "i",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6873,
                                              "src": "11192:1:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "11184:10:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "11175:20:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                            "typeString": "mapping(uint256 => uint256)"
                                          }
                                        },
                                        "id": 6912,
                                        "indexExpression": {
                                          "id": 6911,
                                          "name": "bin",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6829,
                                          "src": "11196:3:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "11175:25:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11161:39:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6914,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11161:39:26"
                                  },
                                  {
                                    "expression": {
                                      "id": 6917,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 6915,
                                        "name": "last_bin",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6849,
                                        "src": "11210:8:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 6916,
                                        "name": "bin",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6829,
                                        "src": "11221:3:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "11210:14:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6918,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11210:14:26"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "id": 6928,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "id": 6921,
                                    "name": "batchBalances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6856,
                                    "src": "11241:13:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 6923,
                                  "indexExpression": {
                                    "id": 6922,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6873,
                                    "src": "11255:1:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "11241:16:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 6925,
                                      "name": "balance_bin",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6839,
                                      "src": "11274:11:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 6926,
                                      "name": "index",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6831,
                                      "src": "11287:5:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 6924,
                                    "name": "getValueInBin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7156,
                                    "src": "11260:13:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6927,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11260:33:26",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11241:52:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6929,
                              "nodeType": "ExpressionStatement",
                              "src": "11241:52:26"
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6878,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6876,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6873,
                            "src": "10958:1:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 6877,
                            "name": "n_owners",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6816,
                            "src": "10962:8:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10958:12:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6931,
                        "initializationExpression": {
                          "assignments": [
                            6873
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 6873,
                              "mutability": "mutable",
                              "name": "i",
                              "nodeType": "VariableDeclaration",
                              "scope": 6931,
                              "src": "10943:9:26",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 6872,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "10943:7:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 6875,
                          "initialValue": {
                            "hexValue": "31",
                            "id": 6874,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10955:1:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10943:13:26"
                        },
                        "loopExpression": {
                          "expression": {
                            "id": 6880,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "++",
                            "prefix": false,
                            "src": "10972:3:26",
                            "subExpression": {
                              "id": 6879,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6873,
                              "src": "10972:1:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6881,
                          "nodeType": "ExpressionStatement",
                          "src": "10972:3:26"
                        },
                        "nodeType": "ForStatement",
                        "src": "10938:362:26"
                      },
                      {
                        "expression": {
                          "id": 6932,
                          "name": "batchBalances",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6856,
                          "src": "11313:13:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "functionReturnParameters": 6814,
                        "id": 6933,
                        "nodeType": "Return",
                        "src": "11306:20:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6802,
                    "nodeType": "StructuredDocumentation",
                    "src": "9964:351:26",
                    "text": " @notice Get the balance of multiple account/token pairs\n @param _owners The addresses of the token holders (sorted owners will lead to less gas usage)\n @param _ids    ID of the Tokens (sorted ids will lead to less gas usage\n @return The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair)"
                  },
                  "functionSelector": "4e1273f4",
                  "id": 6935,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "balanceOfBatch",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 6810,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "10402:8:26"
                  },
                  "parameters": {
                    "id": 6809,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6805,
                        "mutability": "mutable",
                        "name": "_owners",
                        "nodeType": "VariableDeclaration",
                        "scope": 6935,
                        "src": "10342:24:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6803,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "10342:7:26",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 6804,
                          "nodeType": "ArrayTypeName",
                          "src": "10342:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6808,
                        "mutability": "mutable",
                        "name": "_ids",
                        "nodeType": "VariableDeclaration",
                        "scope": 6935,
                        "src": "10368:21:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6806,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "10368:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6807,
                          "nodeType": "ArrayTypeName",
                          "src": "10368:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10341:49:26"
                  },
                  "returnParameters": {
                    "id": 6814,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6813,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 6935,
                        "src": "10425:16:26",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6811,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "10425:7:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6812,
                          "nodeType": "ArrayTypeName",
                          "src": "10425:9:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10424:18:26"
                  },
                  "scope": 7182,
                  "src": "10318:1013:26",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6978,
                    "nodeType": "Block",
                    "src": "11957:240:26",
                    "statements": [
                      {
                        "assignments": [
                          6948
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6948,
                            "mutability": "mutable",
                            "name": "bin",
                            "nodeType": "VariableDeclaration",
                            "scope": 6978,
                            "src": "11963:11:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6947,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11963:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6949,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11963:11:26"
                      },
                      {
                        "assignments": [
                          6951
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6951,
                            "mutability": "mutable",
                            "name": "index",
                            "nodeType": "VariableDeclaration",
                            "scope": 6978,
                            "src": "11980:13:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6950,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "11980:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6952,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "11980:13:26"
                      },
                      {
                        "expression": {
                          "id": 6959,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 6953,
                                "name": "bin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6948,
                                "src": "12033:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 6954,
                                "name": "index",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6951,
                                "src": "12038:5:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 6955,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "12032:12:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6957,
                                "name": "_id",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6940,
                                "src": "12061:3:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6956,
                              "name": "getIDBinIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7120,
                              "src": "12047:13:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint256,uint256)"
                              }
                            },
                            "id": 6958,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12047:18:26",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                              "typeString": "tuple(uint256,uint256)"
                            }
                          },
                          "src": "12032:33:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6960,
                        "nodeType": "ExpressionStatement",
                        "src": "12032:33:26"
                      },
                      {
                        "expression": {
                          "id": 6976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 6961,
                                "name": "balances",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6246,
                                "src": "12094:8:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => uint256))"
                                }
                              },
                              "id": 6964,
                              "indexExpression": {
                                "id": 6962,
                                "name": "_address",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6938,
                                "src": "12103:8:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12094:18:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 6965,
                            "indexExpression": {
                              "id": 6963,
                              "name": "bin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6948,
                              "src": "12113:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "12094:23:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 6967,
                                    "name": "balances",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6246,
                                    "src": "12140:8:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => uint256))"
                                    }
                                  },
                                  "id": 6969,
                                  "indexExpression": {
                                    "id": 6968,
                                    "name": "_address",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6938,
                                    "src": "12149:8:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12140:18:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                    "typeString": "mapping(uint256 => uint256)"
                                  }
                                },
                                "id": 6971,
                                "indexExpression": {
                                  "id": 6970,
                                  "name": "bin",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6948,
                                  "src": "12159:3:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "12140:23:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 6972,
                                "name": "index",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6951,
                                "src": "12165:5:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 6973,
                                "name": "_amount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6942,
                                "src": "12172:7:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 6974,
                                "name": "_operation",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6944,
                                "src": "12181:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Operations_$6240",
                                  "typeString": "enum ERC1155PackedBalance.Operations"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_enum$_Operations_$6240",
                                  "typeString": "enum ERC1155PackedBalance.Operations"
                                }
                              ],
                              "id": 6966,
                              "name": "_viewUpdateBinValue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7093,
                              "src": "12120:19:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_enum$_Operations_$6240_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256,uint256,enum ERC1155PackedBalance.Operations) pure returns (uint256)"
                              }
                            },
                            "id": 6975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12120:72:26",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12094:98:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6977,
                        "nodeType": "ExpressionStatement",
                        "src": "12094:98:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6936,
                    "nodeType": "StructuredDocumentation",
                    "src": "11457:385:26",
                    "text": " @notice Update the balance of a id for a given address\n @param _address    Address to update id balance\n @param _id         Id to update balance of\n @param _amount     Amount to update the id balance\n @param _operation  Which operation to conduct :\n   Operations.Add: Add _amount to id balance\n   Operations.Sub: Substract _amount from id balance"
                  },
                  "id": 6979,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_updateIDBalance",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6938,
                        "mutability": "mutable",
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 6979,
                        "src": "11871:16:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6937,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11871:7:26",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6940,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 6979,
                        "src": "11889:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6939,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11889:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6942,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 6979,
                        "src": "11902:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6941,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11902:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6944,
                        "mutability": "mutable",
                        "name": "_operation",
                        "nodeType": "VariableDeclaration",
                        "scope": 6979,
                        "src": "11919:21:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Operations_$6240",
                          "typeString": "enum ERC1155PackedBalance.Operations"
                        },
                        "typeName": {
                          "id": 6943,
                          "name": "Operations",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6240,
                          "src": "11919:10:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Operations_$6240",
                            "typeString": "enum ERC1155PackedBalance.Operations"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11870:71:26"
                  },
                  "returnParameters": {
                    "id": 6946,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11957:0:26"
                  },
                  "scope": 7182,
                  "src": "11845:352:26",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7092,
                    "nodeType": "Block",
                    "src": "12820:1006:26",
                    "statements": [
                      {
                        "assignments": [
                          6994
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6994,
                            "mutability": "mutable",
                            "name": "shift",
                            "nodeType": "VariableDeclaration",
                            "scope": 7092,
                            "src": "12826:13:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6993,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12826:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6998,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6997,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6995,
                            "name": "IDS_BITS_SIZE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6232,
                            "src": "12842:13:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 6996,
                            "name": "_index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6984,
                            "src": "12858:6:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "12842:22:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12826:38:26"
                      },
                      {
                        "assignments": [
                          7000
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7000,
                            "mutability": "mutable",
                            "name": "mask",
                            "nodeType": "VariableDeclaration",
                            "scope": 7092,
                            "src": "12870:12:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6999,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "12870:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7010,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7009,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "31",
                                      "id": 7003,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12894:1:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      }
                                    ],
                                    "id": 7002,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "12886:7:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 7001,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12886:7:26",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7004,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12886:10:26",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<<",
                                "rightExpression": {
                                  "id": 7005,
                                  "name": "IDS_BITS_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6232,
                                  "src": "12900:13:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12886:27:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 7007,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "12885:29:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 7008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12917:1:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "12885:33:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12870:48:26"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_Operations_$6240",
                            "typeString": "enum ERC1155PackedBalance.Operations"
                          },
                          "id": 7014,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7011,
                            "name": "_operation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6988,
                            "src": "12929:10:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Operations_$6240",
                              "typeString": "enum ERC1155PackedBalance.Operations"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 7012,
                              "name": "Operations",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6240,
                              "src": "12943:10:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                "typeString": "type(enum ERC1155PackedBalance.Operations)"
                              }
                            },
                            "id": 7013,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Add",
                            "nodeType": "MemberAccess",
                            "src": "12943:14:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_Operations_$6240",
                              "typeString": "enum ERC1155PackedBalance.Operations"
                            }
                          },
                          "src": "12929:28:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_Operations_$6240",
                              "typeString": "enum ERC1155PackedBalance.Operations"
                            },
                            "id": 7052,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7049,
                              "name": "_operation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6988,
                              "src": "13317:10:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Operations_$6240",
                                "typeString": "enum ERC1155PackedBalance.Operations"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 7050,
                                "name": "Operations",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6240,
                                "src": "13331:10:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_Operations_$6240_$",
                                  "typeString": "type(enum ERC1155PackedBalance.Operations)"
                                }
                              },
                              "id": 7051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Sub",
                              "nodeType": "MemberAccess",
                              "src": "13331:14:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Operations_$6240",
                                "typeString": "enum ERC1155PackedBalance.Operations"
                              }
                            },
                            "src": "13317:28:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 7087,
                            "nodeType": "Block",
                            "src": "13685:111:26",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "hexValue": "455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20494e56414c49445f42494e5f57524954455f4f5045524154494f4e",
                                      "id": 7084,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13700:71:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_e06199bac3605e1f98e46c9ff3ed416db9133a461f30a41d5abf85bb519872dd",
                                        "typeString": "literal_string \"ERC1155PackedBalance#_viewUpdateBinValue: INVALID_BIN_WRITE_OPERATION\""
                                      },
                                      "value": "ERC1155PackedBalance#_viewUpdateBinValue: INVALID_BIN_WRITE_OPERATION"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_e06199bac3605e1f98e46c9ff3ed416db9133a461f30a41d5abf85bb519872dd",
                                        "typeString": "literal_string \"ERC1155PackedBalance#_viewUpdateBinValue: INVALID_BIN_WRITE_OPERATION\""
                                      }
                                    ],
                                    "id": 7083,
                                    "name": "revert",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -19,
                                      -19
                                    ],
                                    "referencedDeclaration": -19,
                                    "src": "13693:6:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (string memory) pure"
                                    }
                                  },
                                  "id": 7085,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13693:79:26",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 7086,
                                "nodeType": "ExpressionStatement",
                                "src": "13693:79:26"
                              }
                            ]
                          },
                          "id": 7088,
                          "nodeType": "IfStatement",
                          "src": "13313:483:26",
                          "trueBody": {
                            "id": 7082,
                            "nodeType": "Block",
                            "src": "13347:332:26",
                            "statements": [
                              {
                                "expression": {
                                  "id": 7060,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 7053,
                                    "name": "newBinValues",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6991,
                                    "src": "13355:12:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7059,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7054,
                                      "name": "_binValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6982,
                                      "src": "13370:10:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 7057,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7055,
                                            "name": "_amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6986,
                                            "src": "13384:7:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "id": 7056,
                                            "name": "shift",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6994,
                                            "src": "13395:5:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13384:16:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 7058,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "13383:18:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13370:31:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "13355:46:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7061,
                                "nodeType": "ExpressionStatement",
                                "src": "13355:46:26"
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7065,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7063,
                                        "name": "newBinValues",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6991,
                                        "src": "13417:12:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<=",
                                      "rightExpression": {
                                        "id": 7064,
                                        "name": "_binValues",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6982,
                                        "src": "13433:10:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13417:26:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20554e444552464c4f57",
                                      "id": 7066,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13445:53:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_53c73bf74bc3fe0c32a8be7e82498a0e85cce2a380eb16bb789fe9a470747727",
                                        "typeString": "literal_string \"ERC1155PackedBalance#_viewUpdateBinValue: UNDERFLOW\""
                                      },
                                      "value": "ERC1155PackedBalance#_viewUpdateBinValue: UNDERFLOW"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_53c73bf74bc3fe0c32a8be7e82498a0e85cce2a380eb16bb789fe9a470747727",
                                        "typeString": "literal_string \"ERC1155PackedBalance#_viewUpdateBinValue: UNDERFLOW\""
                                      }
                                    ],
                                    "id": 7062,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -18,
                                      -18
                                    ],
                                    "referencedDeclaration": -18,
                                    "src": "13409:7:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 7067,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13409:90:26",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 7068,
                                "nodeType": "ExpressionStatement",
                                "src": "13409:90:26"
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7078,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7075,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 7072,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 7070,
                                                    "name": "_binValues",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6982,
                                                    "src": "13526:10:26",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": ">>",
                                                  "rightExpression": {
                                                    "id": 7071,
                                                    "name": "shift",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6994,
                                                    "src": "13540:5:26",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "13526:19:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 7073,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "13525:21:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 7074,
                                              "name": "mask",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7000,
                                              "src": "13549:4:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "13525:28:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 7076,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "13524:30:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">=",
                                      "rightExpression": {
                                        "id": 7077,
                                        "name": "_amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6986,
                                        "src": "13558:7:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13524:41:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a20554e444552464c4f57",
                                      "id": 7079,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13610:53:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_53c73bf74bc3fe0c32a8be7e82498a0e85cce2a380eb16bb789fe9a470747727",
                                        "typeString": "literal_string \"ERC1155PackedBalance#_viewUpdateBinValue: UNDERFLOW\""
                                      },
                                      "value": "ERC1155PackedBalance#_viewUpdateBinValue: UNDERFLOW"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_53c73bf74bc3fe0c32a8be7e82498a0e85cce2a380eb16bb789fe9a470747727",
                                        "typeString": "literal_string \"ERC1155PackedBalance#_viewUpdateBinValue: UNDERFLOW\""
                                      }
                                    ],
                                    "id": 7069,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -18,
                                      -18
                                    ],
                                    "referencedDeclaration": -18,
                                    "src": "13507:7:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 7080,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "13507:164:26",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 7081,
                                "nodeType": "ExpressionStatement",
                                "src": "13507:164:26"
                              }
                            ]
                          }
                        },
                        "id": 7089,
                        "nodeType": "IfStatement",
                        "src": "12925:871:26",
                        "trueBody": {
                          "id": 7048,
                          "nodeType": "Block",
                          "src": "12959:348:26",
                          "statements": [
                            {
                              "expression": {
                                "id": 7022,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 7015,
                                  "name": "newBinValues",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6991,
                                  "src": "12967:12:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7021,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7016,
                                    "name": "_binValues",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6982,
                                    "src": "12982:10:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "components": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7019,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7017,
                                          "name": "_amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6986,
                                          "src": "12996:7:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "id": 7018,
                                          "name": "shift",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6994,
                                          "src": "13007:5:26",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "12996:16:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "id": 7020,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "12995:18:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "12982:31:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12967:46:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7023,
                              "nodeType": "ExpressionStatement",
                              "src": "12967:46:26"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7027,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7025,
                                      "name": "newBinValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6991,
                                      "src": "13029:12:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 7026,
                                      "name": "_binValues",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6982,
                                      "src": "13045:10:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13029:26:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a204f564552464c4f57",
                                    "id": 7028,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13057:52:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_e726d157b5d94a3d6ae6269401668487947a189ef83c75897ff1da0186114711",
                                      "typeString": "literal_string \"ERC1155PackedBalance#_viewUpdateBinValue: OVERFLOW\""
                                    },
                                    "value": "ERC1155PackedBalance#_viewUpdateBinValue: OVERFLOW"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_e726d157b5d94a3d6ae6269401668487947a189ef83c75897ff1da0186114711",
                                      "typeString": "literal_string \"ERC1155PackedBalance#_viewUpdateBinValue: OVERFLOW\""
                                    }
                                  ],
                                  "id": 7024,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "13021:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 7029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13021:89:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7030,
                              "nodeType": "ExpressionStatement",
                              "src": "13021:89:26"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7044,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7040,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7037,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 7034,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 7032,
                                                    "name": "_binValues",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6982,
                                                    "src": "13137:10:26",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": ">>",
                                                  "rightExpression": {
                                                    "id": 7033,
                                                    "name": "shift",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6994,
                                                    "src": "13151:5:26",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "src": "13137:19:26",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "id": 7035,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "13136:21:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "&",
                                            "rightExpression": {
                                              "id": 7036,
                                              "name": "mask",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7000,
                                              "src": "13160:4:26",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "13136:28:26",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 7038,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "13135:30:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 7039,
                                        "name": "_amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6986,
                                        "src": "13168:7:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13135:40:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7043,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "32",
                                        "id": 7041,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13178:1:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "**",
                                      "rightExpression": {
                                        "id": 7042,
                                        "name": "IDS_BITS_SIZE",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6232,
                                        "src": "13181:13:26",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "13178:16:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13135:59:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  {
                                    "hexValue": "455243313135355061636b656442616c616e6365235f7669657755706461746542696e56616c75653a204f564552464c4f57",
                                    "id": 7045,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "13239:52:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_e726d157b5d94a3d6ae6269401668487947a189ef83c75897ff1da0186114711",
                                      "typeString": "literal_string \"ERC1155PackedBalance#_viewUpdateBinValue: OVERFLOW\""
                                    },
                                    "value": "ERC1155PackedBalance#_viewUpdateBinValue: OVERFLOW"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_e726d157b5d94a3d6ae6269401668487947a189ef83c75897ff1da0186114711",
                                      "typeString": "literal_string \"ERC1155PackedBalance#_viewUpdateBinValue: OVERFLOW\""
                                    }
                                  ],
                                  "id": 7031,
                                  "name": "require",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -18,
                                    -18
                                  ],
                                  "referencedDeclaration": -18,
                                  "src": "13118:7:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (bool,string memory) pure"
                                  }
                                },
                                "id": 7046,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13118:181:26",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7047,
                              "nodeType": "ExpressionStatement",
                              "src": "13118:181:26"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7090,
                          "name": "newBinValues",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6991,
                          "src": "13809:12:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 6992,
                        "id": 7091,
                        "nodeType": "Return",
                        "src": "13802:19:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6980,
                    "nodeType": "StructuredDocumentation",
                    "src": "12201:460:26",
                    "text": " @notice Update a value in _binValues\n @param _binValues  Uint256 containing values of size IDS_BITS_SIZE (the token balances)\n @param _index      Index of the value in the provided bin\n @param _amount     Amount to update the id balance\n @param _operation  Which operation to conduct :\n   Operations.Add: Add _amount to value in _binValues at _index\n   Operations.Sub: Substract _amount from value in _binValues at _index"
                  },
                  "id": 7093,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_viewUpdateBinValue",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6989,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6982,
                        "mutability": "mutable",
                        "name": "_binValues",
                        "nodeType": "VariableDeclaration",
                        "scope": 7093,
                        "src": "12693:18:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6981,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12693:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6984,
                        "mutability": "mutable",
                        "name": "_index",
                        "nodeType": "VariableDeclaration",
                        "scope": 7093,
                        "src": "12713:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6983,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12713:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6986,
                        "mutability": "mutable",
                        "name": "_amount",
                        "nodeType": "VariableDeclaration",
                        "scope": 7093,
                        "src": "12729:15:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6985,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12729:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6988,
                        "mutability": "mutable",
                        "name": "_operation",
                        "nodeType": "VariableDeclaration",
                        "scope": 7093,
                        "src": "12746:21:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Operations_$6240",
                          "typeString": "enum ERC1155PackedBalance.Operations"
                        },
                        "typeName": {
                          "id": 6987,
                          "name": "Operations",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 6240,
                          "src": "12746:10:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Operations_$6240",
                            "typeString": "enum ERC1155PackedBalance.Operations"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12692:76:26"
                  },
                  "returnParameters": {
                    "id": 6992,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6991,
                        "mutability": "mutable",
                        "name": "newBinValues",
                        "nodeType": "VariableDeclaration",
                        "scope": 7093,
                        "src": "12796:20:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6990,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12796:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12795:22:26"
                  },
                  "scope": 7182,
                  "src": "12664:1162:26",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7119,
                    "nodeType": "Block",
                    "src": "14092:98:26",
                    "statements": [
                      {
                        "expression": {
                          "id": 7107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7103,
                            "name": "bin",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7099,
                            "src": "14098:3:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7104,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7096,
                              "src": "14104:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "id": 7105,
                              "name": "IDS_PER_UINT256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6237,
                              "src": "14110:15:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14104:21:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14098:27:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7108,
                        "nodeType": "ExpressionStatement",
                        "src": "14098:27:26"
                      },
                      {
                        "expression": {
                          "id": 7113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7109,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7101,
                            "src": "14131:5:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7110,
                              "name": "_id",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7096,
                              "src": "14139:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "id": 7111,
                              "name": "IDS_PER_UINT256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6237,
                              "src": "14145:15:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14139:21:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14131:29:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7114,
                        "nodeType": "ExpressionStatement",
                        "src": "14131:29:26"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 7115,
                              "name": "bin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7099,
                              "src": "14174:3:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7116,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7101,
                              "src": "14179:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 7117,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "14173:12:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 7102,
                        "id": 7118,
                        "nodeType": "Return",
                        "src": "14166:19:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7094,
                    "nodeType": "StructuredDocumentation",
                    "src": "13830:168:26",
                    "text": " @notice Return the bin number and index within that bin where ID is\n @param _id  Token id\n @return bin index (Bin number, ID\"s index within that bin)"
                  },
                  "functionSelector": "db90e83c",
                  "id": 7120,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getIDBinIndex",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7097,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7096,
                        "mutability": "mutable",
                        "name": "_id",
                        "nodeType": "VariableDeclaration",
                        "scope": 7120,
                        "src": "14024:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7095,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14024:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14023:13:26"
                  },
                  "returnParameters": {
                    "id": 7102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7099,
                        "mutability": "mutable",
                        "name": "bin",
                        "nodeType": "VariableDeclaration",
                        "scope": 7120,
                        "src": "14062:11:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7098,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14062:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7101,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "scope": 7120,
                        "src": "14075:13:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7100,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14075:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14061:28:26"
                  },
                  "scope": 7182,
                  "src": "14001:189:26",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7155,
                    "nodeType": "Block",
                    "src": "14542:337:26",
                    "statements": [
                      {
                        "assignments": [
                          7131
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7131,
                            "mutability": "mutable",
                            "name": "mask",
                            "nodeType": "VariableDeclaration",
                            "scope": 7155,
                            "src": "14710:12:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7130,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14710:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7141,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7137,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "31",
                                      "id": 7134,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "14734:1:26",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      }
                                    ],
                                    "id": 7133,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "14726:7:26",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 7132,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "14726:7:26",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7135,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "14726:10:26",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<<",
                                "rightExpression": {
                                  "id": 7136,
                                  "name": "IDS_BITS_SIZE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6232,
                                  "src": "14740:13:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14726:27:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 7138,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "14725:29:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "hexValue": "31",
                            "id": 7139,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14757:1:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "14725:33:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14710:48:26"
                      },
                      {
                        "assignments": [
                          7143
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7143,
                            "mutability": "mutable",
                            "name": "rightShift",
                            "nodeType": "VariableDeclaration",
                            "scope": 7155,
                            "src": "14785:18:26",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7142,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "14785:7:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7147,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7146,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7144,
                            "name": "IDS_BITS_SIZE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6232,
                            "src": "14806:13:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 7145,
                            "name": "_index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7125,
                            "src": "14822:6:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14806:22:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "14785:43:26"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7153,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7148,
                                  "name": "_binValues",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7123,
                                  "src": "14842:10:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "id": 7149,
                                  "name": "rightShift",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7143,
                                  "src": "14856:10:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "14842:24:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 7151,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "14841:26:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "id": 7152,
                            "name": "mask",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7131,
                            "src": "14870:4:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "14841:33:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7129,
                        "id": 7154,
                        "nodeType": "Return",
                        "src": "14834:40:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7121,
                    "nodeType": "StructuredDocumentation",
                    "src": "14194:250:26",
                    "text": " @notice Return amount in _binValues at position _index\n @param _binValues  uint256 containing the balances of IDS_PER_UINT256 ids\n @param _index      Index at which to retrieve amount\n @return amount at given _index in _bin"
                  },
                  "functionSelector": "eaec5f81",
                  "id": 7156,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getValueInBin",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7126,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7123,
                        "mutability": "mutable",
                        "name": "_binValues",
                        "nodeType": "VariableDeclaration",
                        "scope": 7156,
                        "src": "14470:18:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7122,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14470:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7125,
                        "mutability": "mutable",
                        "name": "_index",
                        "nodeType": "VariableDeclaration",
                        "scope": 7156,
                        "src": "14490:14:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7124,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14490:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14469:36:26"
                  },
                  "returnParameters": {
                    "id": 7129,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7128,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7156,
                        "src": "14531:7:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7127,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14531:7:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14530:9:26"
                  },
                  "scope": 7182,
                  "src": "14447:432:26",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    7228
                  ],
                  "body": {
                    "id": 7180,
                    "nodeType": "Block",
                    "src": "15308:134:26",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 7170,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7165,
                            "name": "_interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7159,
                            "src": "15318:12:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 7167,
                                  "name": "IERC1155",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3875,
                                  "src": "15339:8:26",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_type$_t_contract$_IERC1155_$3875_$",
                                    "typeString": "type(contract IERC1155)"
                                  }
                                ],
                                "id": 7166,
                                "name": "type",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -27,
                                "src": "15334:4:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                  "typeString": "function () pure"
                                }
                              },
                              "id": 7168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "15334:14:26",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_meta_type_t_contract$_IERC1155_$3875",
                                "typeString": "type(contract IERC1155)"
                              }
                            },
                            "id": 7169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "interfaceId",
                            "nodeType": "MemberAccess",
                            "src": "15334:26:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "15318:42:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7174,
                        "nodeType": "IfStatement",
                        "src": "15314:74:26",
                        "trueBody": {
                          "id": 7173,
                          "nodeType": "Block",
                          "src": "15362:26:26",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "74727565",
                                "id": 7171,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15377:4:26",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "true"
                              },
                              "functionReturnParameters": 7164,
                              "id": 7172,
                              "nodeType": "Return",
                              "src": "15370:11:26"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7177,
                              "name": "_interfaceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7159,
                              "src": "15424:12:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "expression": {
                              "id": 7175,
                              "name": "super",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -25,
                              "src": "15400:5:26",
                              "typeDescriptions": {
                                "typeIdentifier": "t_super$_ERC1155PackedBalance_$7182",
                                "typeString": "contract super ERC1155PackedBalance"
                              }
                            },
                            "id": 7176,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "supportsInterface",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7228,
                            "src": "15400:23:26",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) pure returns (bool)"
                            }
                          },
                          "id": 7178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15400:37:26",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 7164,
                        "id": 7179,
                        "nodeType": "Return",
                        "src": "15393:44:26"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7157,
                    "nodeType": "StructuredDocumentation",
                    "src": "15005:208:26",
                    "text": " @notice Query if a contract implements an interface\n @param _interfaceID  The interface identifier, as specified in ERC-165\n @return `true` if the contract implements `_interfaceID` and"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 7181,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 7161,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "15271:8:26"
                  },
                  "parameters": {
                    "id": 7160,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7159,
                        "mutability": "mutable",
                        "name": "_interfaceID",
                        "nodeType": "VariableDeclaration",
                        "scope": 7181,
                        "src": "15243:19:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 7158,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "15243:6:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15242:21:26"
                  },
                  "returnParameters": {
                    "id": 7164,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7163,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7181,
                        "src": "15302:4:26",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7162,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "15302:4:26",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15301:6:26"
                  },
                  "scope": 7182,
                  "src": "15216:226:26",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 7183,
              "src": "815:14629:26"
            }
          ],
          "src": "39:15406:26"
        },
        "id": 26
      },
      "multi-token-standard/contracts/utils/Address.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/utils/Address.sol",
          "exportedSymbols": {
            "Address": [
              7211
            ]
          },
          "id": 7212,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7184,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:22:27"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 7185,
                "nodeType": "StructuredDocumentation",
                "src": "25:59:27",
                "text": " Utility library of inline functions on addresses"
              },
              "fullyImplemented": true,
              "id": 7211,
              "linearizedBaseContracts": [
                7211
              ],
              "name": "Address",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 7188,
                  "mutability": "constant",
                  "name": "ACCOUNT_HASH",
                  "nodeType": "VariableDeclaration",
                  "scope": 7211,
                  "src": "165:107:27",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7186,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "165:7:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307863356432343630313836663732333363393237653764623264636337303363306535303062363533636138323237336237626661643830343564383561343730",
                    "id": 7187,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "206:66:27",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_89477152217924674838424037953991966239322087453347756267410168184682657981552_by_1",
                      "typeString": "int_const 8947...(69 digits omitted)...1552"
                    },
                    "value": "0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7209,
                    "nodeType": "Block",
                    "src": "608:331:27",
                    "statements": [
                      {
                        "assignments": [
                          7197
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7197,
                            "mutability": "mutable",
                            "name": "codehash",
                            "nodeType": "VariableDeclaration",
                            "scope": 7209,
                            "src": "614:16:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7196,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "614:7:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7198,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "614:16:27"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "840:37:27",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "842:33:27",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "_address",
                                    "nodeType": "YulIdentifier",
                                    "src": "866:8:27"
                                  }
                                ],
                                "functionName": {
                                  "name": "extcodehash",
                                  "nodeType": "YulIdentifier",
                                  "src": "854:11:27"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "854:21:27"
                              },
                              "variableNames": [
                                {
                                  "name": "codehash",
                                  "nodeType": "YulIdentifier",
                                  "src": "842:8:27"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 7191,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "866:8:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7197,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "842:8:27",
                            "valueSize": 1
                          }
                        ],
                        "id": 7199,
                        "nodeType": "InlineAssembly",
                        "src": "831:46:27"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 7206,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 7202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7200,
                                  "name": "codehash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7197,
                                  "src": "890:8:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "307830",
                                  "id": 7201,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "902:3:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0x0"
                                },
                                "src": "890:15:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 7205,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7203,
                                  "name": "codehash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7197,
                                  "src": "909:8:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "id": 7204,
                                  "name": "ACCOUNT_HASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7188,
                                  "src": "921:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "909:24:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "890:43:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 7207,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "889:45:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 7195,
                        "id": 7208,
                        "nodeType": "Return",
                        "src": "882:52:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7189,
                    "nodeType": "StructuredDocumentation",
                    "src": "277:261:27",
                    "text": " Returns whether the target address is a contract\n @dev This function will return false if invoked during the constructor of a contract.\n @param _address address of the account to check\n @return Whether the target address is a contract"
                  },
                  "id": 7210,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isContract",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7192,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7191,
                        "mutability": "mutable",
                        "name": "_address",
                        "nodeType": "VariableDeclaration",
                        "scope": 7210,
                        "src": "561:16:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7190,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "561:7:27",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "560:18:27"
                  },
                  "returnParameters": {
                    "id": 7195,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7194,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7210,
                        "src": "602:4:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7193,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "602:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "601:6:27"
                  },
                  "scope": 7211,
                  "src": "541:398:27",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7212,
              "src": "85:856:27"
            }
          ],
          "src": "0:941:27"
        },
        "id": 27
      },
      "multi-token-standard/contracts/utils/ERC165.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/utils/ERC165.sol",
          "exportedSymbols": {
            "ERC165": [
              7229
            ]
          },
          "id": 7230,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7213,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:22:28"
            },
            {
              "abstract": true,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 7229,
              "linearizedBaseContracts": [
                7229
              ],
              "name": "ERC165",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 7227,
                    "nodeType": "Block",
                    "src": "342:65:28",
                    "statements": [
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 7225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7221,
                            "name": "_interfaceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7216,
                            "src": "355:12:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 7222,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "371:4:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ERC165_$7229",
                                  "typeString": "contract ERC165"
                                }
                              },
                              "id": 7223,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "supportsInterface",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7228,
                              "src": "371:22:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_pure$_t_bytes4_$returns$_t_bool_$",
                                "typeString": "function (bytes4) pure external returns (bool)"
                              }
                            },
                            "id": 7224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "371:31:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "355:47:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 7220,
                        "id": 7226,
                        "nodeType": "Return",
                        "src": "348:54:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7214,
                    "nodeType": "StructuredDocumentation",
                    "src": "53:203:28",
                    "text": " @notice Query if a contract implements an interface\n @param _interfaceID The interface identifier, as specified in ERC-165\n @return `true` if the contract implements `_interfaceID`"
                  },
                  "functionSelector": "01ffc9a7",
                  "id": 7228,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "supportsInterface",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7216,
                        "mutability": "mutable",
                        "name": "_interfaceID",
                        "nodeType": "VariableDeclaration",
                        "scope": 7228,
                        "src": "286:19:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 7215,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "286:6:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "285:21:28"
                  },
                  "returnParameters": {
                    "id": 7220,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7219,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7228,
                        "src": "336:4:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7218,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "336:4:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "335:6:28"
                  },
                  "scope": 7229,
                  "src": "259:148:28",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "public"
                }
              ],
              "scope": 7230,
              "src": "24:385:28"
            }
          ],
          "src": "0:409:28"
        },
        "id": 28
      },
      "multi-token-standard/contracts/utils/LibBytes.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/utils/LibBytes.sol",
          "exportedSymbols": {
            "LibBytes": [
              7292
            ]
          },
          "id": 7293,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7231,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "653:22:29"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "fullyImplemented": true,
              "id": 7292,
              "linearizedBaseContracts": [
                7292
              ],
              "name": "LibBytes",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 7234,
                  "libraryName": {
                    "id": 7232,
                    "name": "LibBytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7292,
                    "src": "705:8:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LibBytes_$7292",
                      "typeString": "library LibBytes"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "699:25:29",
                  "typeName": {
                    "id": 7233,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "718:5:29",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "body": {
                    "id": 7262,
                    "nodeType": "Block",
                    "src": "1122:307:29",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7246,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 7243,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7237,
                                  "src": "1143:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 7244,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1143:8:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 7245,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1154:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1143:12:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4c6962427974657323706f704c617374427974653a20475245415445525f5448414e5f5a45524f5f4c454e4754485f5245515549524544",
                              "id": 7247,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1163:57:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_23dd6fcfc9e5c2ed30a99d2c2fba8e178244b0c0735c0dfb453d35992d8fe8d1",
                                "typeString": "literal_string \"LibBytes#popLastByte: GREATER_THAN_ZERO_LENGTH_REQUIRED\""
                              },
                              "value": "LibBytes#popLastByte: GREATER_THAN_ZERO_LENGTH_REQUIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_23dd6fcfc9e5c2ed30a99d2c2fba8e178244b0c0735c0dfb453d35992d8fe8d1",
                                "typeString": "literal_string \"LibBytes#popLastByte: GREATER_THAN_ZERO_LENGTH_REQUIRED\""
                              }
                            ],
                            "id": 7242,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1128:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1128:98:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7249,
                        "nodeType": "ExpressionStatement",
                        "src": "1128:98:29"
                      },
                      {
                        "expression": {
                          "id": 7257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7250,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7240,
                            "src": "1257:6:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 7251,
                              "name": "b",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7237,
                              "src": "1266:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 7256,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7255,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 7252,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7237,
                                  "src": "1268:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 7253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1268:8:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 7254,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1279:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1268:12:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1266:15:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "src": "1257:24:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 7258,
                        "nodeType": "ExpressionStatement",
                        "src": "1257:24:29"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1297:109:29",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1346:30:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "b",
                                        "nodeType": "YulIdentifier",
                                        "src": "1370:1:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1364:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1364:8:29"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1374:1:29",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "1360:3:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1360:16:29"
                              },
                              "variables": [
                                {
                                  "name": "newLen",
                                  "nodeType": "YulTypedName",
                                  "src": "1350:6:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "b",
                                    "nodeType": "YulIdentifier",
                                    "src": "1390:1:29"
                                  },
                                  {
                                    "name": "newLen",
                                    "nodeType": "YulIdentifier",
                                    "src": "1393:6:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1383:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1383:17:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1383:17:29"
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 7237,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1370:1:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7237,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1390:1:29",
                            "valueSize": 1
                          }
                        ],
                        "id": 7259,
                        "nodeType": "InlineAssembly",
                        "src": "1288:118:29"
                      },
                      {
                        "expression": {
                          "id": 7260,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7240,
                          "src": "1418:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "functionReturnParameters": 7241,
                        "id": 7261,
                        "nodeType": "Return",
                        "src": "1411:13:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7235,
                    "nodeType": "StructuredDocumentation",
                    "src": "849:181:29",
                    "text": " @dev Pops the last byte off of a byte array by modifying its length.\n @param b Byte array that will be modified.\n @return result The byte that was popped off."
                  },
                  "id": 7263,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "popLastByte",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7238,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7237,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 7263,
                        "src": "1054:14:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7236,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1054:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1053:16:29"
                  },
                  "returnParameters": {
                    "id": 7241,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7240,
                        "mutability": "mutable",
                        "name": "result",
                        "nodeType": "VariableDeclaration",
                        "scope": 7263,
                        "src": "1105:13:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes1",
                          "typeString": "bytes1"
                        },
                        "typeName": {
                          "id": 7239,
                          "name": "bytes1",
                          "nodeType": "ElementaryTypeName",
                          "src": "1105:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1104:15:29"
                  },
                  "scope": 7292,
                  "src": "1033:396:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7290,
                    "nodeType": "Block",
                    "src": "1909:319:29",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7279,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 7274,
                                  "name": "b",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7266,
                                  "src": "1930:1:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 7275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "1930:8:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7278,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7276,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7268,
                                  "src": "1942:5:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "hexValue": "3332",
                                  "id": 7277,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1950:2:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_32_by_1",
                                    "typeString": "int_const 32"
                                  },
                                  "value": "32"
                                },
                                "src": "1942:10:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1930:22:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4c696242797465732372656164427974657333323a20475245415445525f4f525f455155414c5f544f5f33325f4c454e4754485f5245515549524544",
                              "id": 7280,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1960:62:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dbd223ff7cd1f220e81ac4c4617eae8631b7189ebd7ae8c886bc43698daf84b3",
                                "typeString": "literal_string \"LibBytes#readBytes32: GREATER_OR_EQUAL_TO_32_LENGTH_REQUIRED\""
                              },
                              "value": "LibBytes#readBytes32: GREATER_OR_EQUAL_TO_32_LENGTH_REQUIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dbd223ff7cd1f220e81ac4c4617eae8631b7189ebd7ae8c886bc43698daf84b3",
                                "typeString": "literal_string \"LibBytes#readBytes32: GREATER_OR_EQUAL_TO_32_LENGTH_REQUIRED\""
                              }
                            ],
                            "id": 7273,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1915:7:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1915:113:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7282,
                        "nodeType": "ExpressionStatement",
                        "src": "1915:113:29"
                      },
                      {
                        "expression": {
                          "id": 7285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7283,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7268,
                            "src": "2092:5:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "hexValue": "3332",
                            "id": 7284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2101:2:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "2092:11:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7286,
                        "nodeType": "ExpressionStatement",
                        "src": "2092:11:29"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2161:44:29",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2169:30:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "b",
                                        "nodeType": "YulIdentifier",
                                        "src": "2189:1:29"
                                      },
                                      {
                                        "name": "index",
                                        "nodeType": "YulIdentifier",
                                        "src": "2192:5:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2185:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2185:13:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2179:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2179:20:29"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nodeType": "YulIdentifier",
                                  "src": "2169:6:29"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "istanbul",
                        "externalReferences": [
                          {
                            "declaration": 7266,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2189:1:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7268,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2192:5:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7271,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2169:6:29",
                            "valueSize": 1
                          }
                        ],
                        "id": 7287,
                        "nodeType": "InlineAssembly",
                        "src": "2152:53:29"
                      },
                      {
                        "expression": {
                          "id": 7288,
                          "name": "result",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7271,
                          "src": "2217:6:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 7272,
                        "id": 7289,
                        "nodeType": "Return",
                        "src": "2210:13:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7264,
                    "nodeType": "StructuredDocumentation",
                    "src": "1555:234:29",
                    "text": " @dev Reads a bytes32 value from a position in a byte array.\n @param b Byte array containing a bytes32 value.\n @param index Index in byte array of bytes32 value.\n @return result bytes32 value from byte array."
                  },
                  "id": 7291,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "readBytes32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7269,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7266,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 7291,
                        "src": "1818:14:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7265,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1818:5:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7268,
                        "mutability": "mutable",
                        "name": "index",
                        "nodeType": "VariableDeclaration",
                        "scope": 7291,
                        "src": "1838:13:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7267,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1838:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1812:43:29"
                  },
                  "returnParameters": {
                    "id": 7272,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7271,
                        "mutability": "mutable",
                        "name": "result",
                        "nodeType": "VariableDeclaration",
                        "scope": 7291,
                        "src": "1891:14:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7270,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1891:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1890:16:29"
                  },
                  "scope": 7292,
                  "src": "1792:436:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7293,
              "src": "678:1552:29"
            }
          ],
          "src": "653:1577:29"
        },
        "id": 29
      },
      "multi-token-standard/contracts/utils/LibEIP712.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/utils/LibEIP712.sol",
          "exportedSymbols": {
            "LibEIP712": [
              7328
            ]
          },
          "id": 7329,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7294,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "586:22:30"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 7328,
              "linearizedBaseContracts": [
                7328
              ],
              "name": "LibEIP712",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": true,
                  "id": 7297,
                  "mutability": "constant",
                  "name": "DOMAIN_SEPARATOR_TYPEHASH",
                  "nodeType": "VariableDeclaration",
                  "scope": 7328,
                  "src": "829:120:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7295,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "829:7:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": {
                    "hexValue": "307830333561666638336438363933376433356233326530346630646463366666343639323930656566326631623639326438613831356338393430346434373439",
                    "id": 7296,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "883:66:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1517718281442037948617199096126532355110765202990829672390711201829802035017_by_1",
                      "typeString": "int_const 1517...(68 digits omitted)...5017"
                    },
                    "value": "0x035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d4749"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 7300,
                  "mutability": "constant",
                  "name": "EIP191_HEADER",
                  "nodeType": "VariableDeclaration",
                  "scope": 7328,
                  "src": "974:51:30",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7298,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "974:6:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": {
                    "hexValue": "1901",
                    "id": 7299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1015:10:30",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                      "typeString": "literal_string hex\"1901\""
                    },
                    "value": "\u0019\u0001"
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7326,
                    "nodeType": "Block",
                    "src": "1457:230:30",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 7311,
                                  "name": "EIP191_HEADER",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7300,
                                  "src": "1513:13:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 7315,
                                          "name": "DOMAIN_SEPARATOR_TYPEHASH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7297,
                                          "src": "1581:25:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "id": 7318,
                                              "name": "this",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -28,
                                              "src": "1628:4:30",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_LibEIP712_$7328",
                                                "typeString": "contract LibEIP712"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_contract$_LibEIP712_$7328",
                                                "typeString": "contract LibEIP712"
                                              }
                                            ],
                                            "id": 7317,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1620:7:30",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_address_$",
                                              "typeString": "type(address)"
                                            },
                                            "typeName": {
                                              "id": 7316,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1620:7:30",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 7319,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1620:13:30",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "id": 7313,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "1557:3:30",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 7314,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encode",
                                        "nodeType": "MemberAccess",
                                        "src": "1557:10:30",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 7320,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1557:88:30",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 7312,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1536:9:30",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 7321,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1536:119:30",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 7322,
                                  "name": "hashStruct",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7303,
                                  "src": "1665:10:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 7309,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1487:3:30",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 7310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "1487:16:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 7323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1487:194:30",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 7308,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1470:9:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 7324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1470:212:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 7307,
                        "id": 7325,
                        "nodeType": "Return",
                        "src": "1463:219:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7301,
                    "nodeType": "StructuredDocumentation",
                    "src": "1151:197:30",
                    "text": " @dev Calculates EIP712 encoding for a hash struct in this EIP712 Domain.\n @param hashStruct The EIP712 hash struct.\n @return result EIP712 hash applied to this EIP712 Domain."
                  },
                  "id": 7327,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "hashEIP712Message",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7304,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7303,
                        "mutability": "mutable",
                        "name": "hashStruct",
                        "nodeType": "VariableDeclaration",
                        "scope": 7327,
                        "src": "1378:18:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7302,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1378:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1377:20:30"
                  },
                  "returnParameters": {
                    "id": 7307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7306,
                        "mutability": "mutable",
                        "name": "result",
                        "nodeType": "VariableDeclaration",
                        "scope": 7327,
                        "src": "1439:14:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7305,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1439:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1438:16:30"
                  },
                  "scope": 7328,
                  "src": "1351:336:30",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7329,
              "src": "611:1078:30"
            }
          ],
          "src": "586:1104:30"
        },
        "id": 30
      },
      "multi-token-standard/contracts/utils/SafeMath.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/utils/SafeMath.sol",
          "exportedSymbols": {
            "SafeMath": [
              7467
            ]
          },
          "id": 7468,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7330,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:22:31"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "library",
              "documentation": {
                "id": 7331,
                "nodeType": "StructuredDocumentation",
                "src": "25:99:31",
                "text": " @title SafeMath\n @dev Unsigned math operations with safety checks that revert on error"
              },
              "fullyImplemented": true,
              "id": 7467,
              "linearizedBaseContracts": [
                7467
              ],
              "name": "SafeMath",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 7365,
                    "nodeType": "Block",
                    "src": "291:340:31",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7341,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7334,
                            "src": "506:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7342,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "511:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "506:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7347,
                        "nodeType": "IfStatement",
                        "src": "502:35:31",
                        "trueBody": {
                          "id": 7346,
                          "nodeType": "Block",
                          "src": "514:23:31",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "30",
                                "id": 7344,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "529:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "functionReturnParameters": 7340,
                              "id": 7345,
                              "nodeType": "Return",
                              "src": "522:8:31"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          7349
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7349,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 7365,
                            "src": "543:9:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7348,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "543:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7353,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7350,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7334,
                            "src": "555:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 7351,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7336,
                            "src": "559:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "555:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "543:17:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7359,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7357,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7355,
                                  "name": "c",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7349,
                                  "src": "574:1:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "id": 7356,
                                  "name": "a",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7334,
                                  "src": "578:1:31",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "574:5:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "id": 7358,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7336,
                                "src": "583:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "574:10:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "536166654d617468236d756c3a204f564552464c4f57",
                              "id": 7360,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "586:24:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6631eab3c1c1ec7659f8ce75290ab9f7fbbc49ae8d385122e795162bad662acd",
                                "typeString": "literal_string \"SafeMath#mul: OVERFLOW\""
                              },
                              "value": "SafeMath#mul: OVERFLOW"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6631eab3c1c1ec7659f8ce75290ab9f7fbbc49ae8d385122e795162bad662acd",
                                "typeString": "literal_string \"SafeMath#mul: OVERFLOW\""
                              }
                            ],
                            "id": 7354,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "566:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7361,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "566:45:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7362,
                        "nodeType": "ExpressionStatement",
                        "src": "566:45:31"
                      },
                      {
                        "expression": {
                          "id": 7363,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7349,
                          "src": "625:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7340,
                        "id": 7364,
                        "nodeType": "Return",
                        "src": "618:8:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7332,
                    "nodeType": "StructuredDocumentation",
                    "src": "147:74:31",
                    "text": " @dev Multiplies two unsigned integers, reverts on overflow."
                  },
                  "id": 7366,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mul",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7337,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7334,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 7366,
                        "src": "237:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7333,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "237:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7336,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 7366,
                        "src": "248:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7335,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "248:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "236:22:31"
                  },
                  "returnParameters": {
                    "id": 7340,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7339,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7366,
                        "src": "282:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7338,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "282:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "281:9:31"
                  },
                  "scope": 7467,
                  "src": "224:407:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7391,
                    "nodeType": "Block",
                    "src": "820:241:31",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7379,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7377,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7371,
                                "src": "896:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 7378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "900:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "896:5:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "536166654d617468236469763a204449564953494f4e5f42595f5a45524f",
                              "id": 7380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "903:32:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_c36d9d3e0c4d13d4cdfb7baf0371eec71c6596edd2785d23eb0b323335405a7a",
                                "typeString": "literal_string \"SafeMath#div: DIVISION_BY_ZERO\""
                              },
                              "value": "SafeMath#div: DIVISION_BY_ZERO"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_c36d9d3e0c4d13d4cdfb7baf0371eec71c6596edd2785d23eb0b323335405a7a",
                                "typeString": "literal_string \"SafeMath#div: DIVISION_BY_ZERO\""
                              }
                            ],
                            "id": 7376,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "888:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "888:48:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7382,
                        "nodeType": "ExpressionStatement",
                        "src": "888:48:31"
                      },
                      {
                        "assignments": [
                          7384
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7384,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 7391,
                            "src": "942:9:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7383,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "942:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7388,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7385,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7369,
                            "src": "954:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "id": 7386,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7371,
                            "src": "958:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "954:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "942:17:31"
                      },
                      {
                        "expression": {
                          "id": 7389,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7384,
                          "src": "1055:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7375,
                        "id": 7390,
                        "nodeType": "Return",
                        "src": "1048:8:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7367,
                    "nodeType": "StructuredDocumentation",
                    "src": "635:115:31",
                    "text": " @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero."
                  },
                  "id": 7392,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "div",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7372,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7369,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 7392,
                        "src": "766:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7368,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "766:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7371,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 7392,
                        "src": "777:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7370,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "777:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "765:22:31"
                  },
                  "returnParameters": {
                    "id": 7375,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7374,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7392,
                        "src": "811:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7373,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "811:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "810:9:31"
                  },
                  "scope": 7467,
                  "src": "753:308:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7417,
                    "nodeType": "Block",
                    "src": "1253:91:31",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7405,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7403,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7397,
                                "src": "1267:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "id": 7404,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7395,
                                "src": "1272:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1267:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "536166654d617468237375623a20554e444552464c4f57",
                              "id": 7406,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1275:25:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4c9bc0c7d77a5da304a056b5a05f28805364acf05afb77358700a2ddca1b6a79",
                                "typeString": "literal_string \"SafeMath#sub: UNDERFLOW\""
                              },
                              "value": "SafeMath#sub: UNDERFLOW"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4c9bc0c7d77a5da304a056b5a05f28805364acf05afb77358700a2ddca1b6a79",
                                "typeString": "literal_string \"SafeMath#sub: UNDERFLOW\""
                              }
                            ],
                            "id": 7402,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1259:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1259:42:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7408,
                        "nodeType": "ExpressionStatement",
                        "src": "1259:42:31"
                      },
                      {
                        "assignments": [
                          7410
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7410,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 7417,
                            "src": "1307:9:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7409,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1307:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7414,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7411,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7395,
                            "src": "1319:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 7412,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7397,
                            "src": "1323:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1319:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1307:17:31"
                      },
                      {
                        "expression": {
                          "id": 7415,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7410,
                          "src": "1338:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7401,
                        "id": 7416,
                        "nodeType": "Return",
                        "src": "1331:8:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7393,
                    "nodeType": "StructuredDocumentation",
                    "src": "1065:118:31",
                    "text": " @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend)."
                  },
                  "id": 7418,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "sub",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7398,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7395,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 7418,
                        "src": "1199:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7394,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1199:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7397,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 7418,
                        "src": "1210:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7396,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1210:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1198:22:31"
                  },
                  "returnParameters": {
                    "id": 7401,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7400,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7418,
                        "src": "1244:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7399,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1244:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1243:9:31"
                  },
                  "scope": 7467,
                  "src": "1186:158:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7443,
                    "nodeType": "Block",
                    "src": "1486:91:31",
                    "statements": [
                      {
                        "assignments": [
                          7429
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7429,
                            "mutability": "mutable",
                            "name": "c",
                            "nodeType": "VariableDeclaration",
                            "scope": 7443,
                            "src": "1492:9:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7428,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1492:7:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7433,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7430,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7421,
                            "src": "1504:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 7431,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7423,
                            "src": "1508:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1504:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1492:17:31"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7437,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7435,
                                "name": "c",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7429,
                                "src": "1523:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">=",
                              "rightExpression": {
                                "id": 7436,
                                "name": "a",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7421,
                                "src": "1528:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1523:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "536166654d617468236164643a204f564552464c4f57",
                              "id": 7438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1531:24:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_dfa65337becd76e1bb13ca279a5adb7e6d420bd3575b95dc9a0cf7916fd026a9",
                                "typeString": "literal_string \"SafeMath#add: OVERFLOW\""
                              },
                              "value": "SafeMath#add: OVERFLOW"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_dfa65337becd76e1bb13ca279a5adb7e6d420bd3575b95dc9a0cf7916fd026a9",
                                "typeString": "literal_string \"SafeMath#add: OVERFLOW\""
                              }
                            ],
                            "id": 7434,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1515:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7439,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1515:41:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7440,
                        "nodeType": "ExpressionStatement",
                        "src": "1515:41:31"
                      },
                      {
                        "expression": {
                          "id": 7441,
                          "name": "c",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7429,
                          "src": "1570:1:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7427,
                        "id": 7442,
                        "nodeType": "Return",
                        "src": "1563:8:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7419,
                    "nodeType": "StructuredDocumentation",
                    "src": "1348:68:31",
                    "text": " @dev Adds two unsigned integers, reverts on overflow."
                  },
                  "id": 7444,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "add",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7424,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7421,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 7444,
                        "src": "1432:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7420,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1432:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7423,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 7444,
                        "src": "1443:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7422,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1443:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1431:22:31"
                  },
                  "returnParameters": {
                    "id": 7427,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7426,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7444,
                        "src": "1477:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7425,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1477:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1476:9:31"
                  },
                  "scope": 7467,
                  "src": "1419:158:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7465,
                    "nodeType": "Block",
                    "src": "1789:78:31",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7457,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7455,
                                "name": "b",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7449,
                                "src": "1803:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 7456,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1808:1:31",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1803:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "536166654d617468236d6f643a204449564953494f4e5f42595f5a45524f",
                              "id": 7458,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1811:32:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a256b7344a652b5cff3e03273f3d555fff1b779178b16912d34a22114f40f78b",
                                "typeString": "literal_string \"SafeMath#mod: DIVISION_BY_ZERO\""
                              },
                              "value": "SafeMath#mod: DIVISION_BY_ZERO"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a256b7344a652b5cff3e03273f3d555fff1b779178b16912d34a22114f40f78b",
                                "typeString": "literal_string \"SafeMath#mod: DIVISION_BY_ZERO\""
                              }
                            ],
                            "id": 7454,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "1795:7:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1795:49:31",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7460,
                        "nodeType": "ExpressionStatement",
                        "src": "1795:49:31"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7461,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7447,
                            "src": "1857:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "%",
                          "rightExpression": {
                            "id": 7462,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7449,
                            "src": "1861:1:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1857:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 7453,
                        "id": 7464,
                        "nodeType": "Return",
                        "src": "1850:12:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7445,
                    "nodeType": "StructuredDocumentation",
                    "src": "1581:138:31",
                    "text": " @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),\n reverts when dividing by zero."
                  },
                  "id": 7466,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "mod",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7450,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7447,
                        "mutability": "mutable",
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 7466,
                        "src": "1735:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7446,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1735:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7449,
                        "mutability": "mutable",
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 7466,
                        "src": "1746:9:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7448,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1746:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1734:22:31"
                  },
                  "returnParameters": {
                    "id": 7453,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7452,
                        "mutability": "mutable",
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 7466,
                        "src": "1780:7:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7451,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1780:7:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1779:9:31"
                  },
                  "scope": 7467,
                  "src": "1722:145:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7468,
              "src": "125:1744:31"
            }
          ],
          "src": "0:1869:31"
        },
        "id": 31
      },
      "multi-token-standard/contracts/utils/SignatureValidator.sol": {
        "ast": {
          "absolutePath": "multi-token-standard/contracts/utils/SignatureValidator.sol",
          "exportedSymbols": {
            "IERC1271Wallet": [
              3953
            ],
            "LibBytes": [
              7292
            ],
            "LibEIP712": [
              7328
            ],
            "SignatureValidator": [
              7731
            ]
          },
          "id": 7732,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7469,
              "literals": [
                "solidity",
                "0.7",
                ".4"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:22:32"
            },
            {
              "absolutePath": "multi-token-standard/contracts/interfaces/IERC1271Wallet.sol",
              "file": "../interfaces/IERC1271Wallet.sol",
              "id": 7470,
              "nodeType": "ImportDirective",
              "scope": 7732,
              "sourceUnit": 3954,
              "src": "24:42:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/LibBytes.sol",
              "file": "./LibBytes.sol",
              "id": 7471,
              "nodeType": "ImportDirective",
              "scope": 7732,
              "sourceUnit": 7293,
              "src": "67:24:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "multi-token-standard/contracts/utils/LibEIP712.sol",
              "file": "./LibEIP712.sol",
              "id": 7472,
              "nodeType": "ImportDirective",
              "scope": 7732,
              "sourceUnit": 7329,
              "src": "92:25:32",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7474,
                    "name": "LibEIP712",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7328,
                    "src": "447:9:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LibEIP712_$7328",
                      "typeString": "contract LibEIP712"
                    }
                  },
                  "id": 7475,
                  "nodeType": "InheritanceSpecifier",
                  "src": "447:9:32"
                }
              ],
              "contractDependencies": [
                7328
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 7473,
                "nodeType": "StructuredDocumentation",
                "src": "120:295:32",
                "text": " @dev Contains logic for signature validation.\n Signatures from wallet contracts assume ERC-1271 support (https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md)\n Notes: Methods are strongly inspired by contracts in https://github.com/0xProject/0x-monorepo/blob/development/"
              },
              "fullyImplemented": true,
              "id": 7731,
              "linearizedBaseContracts": [
                7731,
                7328
              ],
              "name": "SignatureValidator",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "id": 7478,
                  "libraryName": {
                    "id": 7476,
                    "name": "LibBytes",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7292,
                    "src": "467:8:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_LibBytes_$7292",
                      "typeString": "library LibBytes"
                    }
                  },
                  "nodeType": "UsingForDirective",
                  "src": "461:25:32",
                  "typeName": {
                    "id": 7477,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "480:5:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  }
                },
                {
                  "constant": true,
                  "id": 7481,
                  "mutability": "constant",
                  "name": "ERC1271_MAGICVALUE",
                  "nodeType": "VariableDeclaration",
                  "scope": 7731,
                  "src": "667:56:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 7479,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "667:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30783230633133623062",
                    "id": 7480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "713:10:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_549534475_by_1",
                      "typeString": "int_const 549534475"
                    },
                    "value": "0x20c13b0b"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": true,
                  "id": 7484,
                  "mutability": "constant",
                  "name": "ERC1271_MAGICVALUE_BYTES32",
                  "nodeType": "VariableDeclaration",
                  "scope": 7731,
                  "src": "786:64:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 7482,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "786:6:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": {
                    "hexValue": "30783136323662613765",
                    "id": 7483,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "840:10:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_371636862_by_1",
                      "typeString": "int_const 371636862"
                    },
                    "value": "0x1626ba7e"
                  },
                  "visibility": "internal"
                },
                {
                  "canonicalName": "SignatureValidator.SignatureType",
                  "id": 7491,
                  "members": [
                    {
                      "id": 7485,
                      "name": "Illegal",
                      "nodeType": "EnumValue",
                      "src": "910:7:32"
                    },
                    {
                      "id": 7486,
                      "name": "EIP712",
                      "nodeType": "EnumValue",
                      "src": "954:6:32"
                    },
                    {
                      "id": 7487,
                      "name": "EthSign",
                      "nodeType": "EnumValue",
                      "src": "983:7:32"
                    },
                    {
                      "id": 7488,
                      "name": "WalletBytes",
                      "nodeType": "EnumValue",
                      "src": "1012:11:32"
                    },
                    {
                      "id": 7489,
                      "name": "WalletBytes32",
                      "nodeType": "EnumValue",
                      "src": "1099:13:32"
                    },
                    {
                      "id": 7490,
                      "name": "NSignatureTypes",
                      "nodeType": "EnumValue",
                      "src": "1188:15:32"
                    }
                  ],
                  "name": "SignatureType",
                  "nodeType": "EnumDefinition",
                  "src": "885:380:32"
                },
                {
                  "body": {
                    "id": 7729,
                    "nodeType": "Block",
                    "src": "2220:3006:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 7506,
                                  "name": "_sig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7500,
                                  "src": "2241:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 7507,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "2241:11:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 7508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2255:1:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2241:15:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f475245415445525f5448414e5f305f5245515549524544",
                              "id": 7510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2264:69:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b83eeccfe52e00a51c8180d069edfee8782a77d9935488c6e7c900cd4da8365a",
                                "typeString": "literal_string \"SignatureValidator#isValidSignature: LENGTH_GREATER_THAN_0_REQUIRED\""
                              },
                              "value": "SignatureValidator#isValidSignature: LENGTH_GREATER_THAN_0_REQUIRED"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b83eeccfe52e00a51c8180d069edfee8782a77d9935488c6e7c900cd4da8365a",
                                "typeString": "literal_string \"SignatureValidator#isValidSignature: LENGTH_GREATER_THAN_0_REQUIRED\""
                              }
                            ],
                            "id": 7505,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2226:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2226:113:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7512,
                        "nodeType": "ExpressionStatement",
                        "src": "2226:113:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 7519,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7514,
                                "name": "_signerAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7494,
                                "src": "2361:14:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "307830",
                                    "id": 7517,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2387:3:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0x0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 7516,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2379:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 7515,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2379:7:32",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7518,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2379:12:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2361:30:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494e56414c49445f5349474e4552",
                              "id": 7520,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2399:53:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a8a2c3dd9ef44c2ee0947283e0d25c4b84e1bec09ac1046d888e639c08ad9ff2",
                                "typeString": "literal_string \"SignatureValidator#isValidSignature: INVALID_SIGNER\""
                              },
                              "value": "SignatureValidator#isValidSignature: INVALID_SIGNER"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a8a2c3dd9ef44c2ee0947283e0d25c4b84e1bec09ac1046d888e639c08ad9ff2",
                                "typeString": "literal_string \"SignatureValidator#isValidSignature: INVALID_SIGNER\""
                              }
                            ],
                            "id": 7513,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2346:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7521,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2346:112:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7522,
                        "nodeType": "ExpressionStatement",
                        "src": "2346:112:32"
                      },
                      {
                        "assignments": [
                          7524
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7524,
                            "mutability": "mutable",
                            "name": "signatureTypeRaw",
                            "nodeType": "VariableDeclaration",
                            "scope": 7729,
                            "src": "2515:22:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 7523,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "2515:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7531,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "id": 7527,
                                  "name": "_sig",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7500,
                                  "src": "2546:4:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 7528,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "popLastByte",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7263,
                                "src": "2546:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes1_$bound_to$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes memory) pure returns (bytes1)"
                                }
                              },
                              "id": 7529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2546:18:32",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            ],
                            "id": 7526,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2540:5:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": {
                              "id": 7525,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "2540:5:32",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 7530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2540:25:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2515:50:32"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 7539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7533,
                                "name": "signatureTypeRaw",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7524,
                                "src": "2624:16:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 7536,
                                      "name": "SignatureType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7491,
                                      "src": "2649:13:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_SignatureType_$7491_$",
                                        "typeString": "type(enum SignatureValidator.SignatureType)"
                                      }
                                    },
                                    "id": 7537,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "NSignatureTypes",
                                    "nodeType": "MemberAccess",
                                    "src": "2649:29:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_SignatureType_$7491",
                                      "typeString": "enum SignatureValidator.SignatureType"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_SignatureType_$7491",
                                      "typeString": "enum SignatureValidator.SignatureType"
                                    }
                                  ],
                                  "id": 7535,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2643:5:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint8_$",
                                    "typeString": "type(uint8)"
                                  },
                                  "typeName": {
                                    "id": 7534,
                                    "name": "uint8",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2643:5:32",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 7538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2643:36:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "src": "2624:55:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e4154555245",
                              "id": 7540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2687:60:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5499569b0e2c16f9d78ba5852c84f35e9af2945a2bef902e56c28b6eda3ee8af",
                                "typeString": "literal_string \"SignatureValidator#isValidSignature: UNSUPPORTED_SIGNATURE\""
                              },
                              "value": "SignatureValidator#isValidSignature: UNSUPPORTED_SIGNATURE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_5499569b0e2c16f9d78ba5852c84f35e9af2945a2bef902e56c28b6eda3ee8af",
                                "typeString": "literal_string \"SignatureValidator#isValidSignature: UNSUPPORTED_SIGNATURE\""
                              }
                            ],
                            "id": 7532,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "2609:7:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 7541,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2609:144:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7542,
                        "nodeType": "ExpressionStatement",
                        "src": "2609:144:32"
                      },
                      {
                        "assignments": [
                          7544
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7544,
                            "mutability": "mutable",
                            "name": "signatureType",
                            "nodeType": "VariableDeclaration",
                            "scope": 7729,
                            "src": "2790:27:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_SignatureType_$7491",
                              "typeString": "enum SignatureValidator.SignatureType"
                            },
                            "typeName": {
                              "id": 7543,
                              "name": "SignatureType",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 7491,
                              "src": "2790:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_SignatureType_$7491",
                                "typeString": "enum SignatureValidator.SignatureType"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7548,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7546,
                              "name": "signatureTypeRaw",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7524,
                              "src": "2834:16:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            ],
                            "id": 7545,
                            "name": "SignatureType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7491,
                            "src": "2820:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_SignatureType_$7491_$",
                              "typeString": "type(enum SignatureValidator.SignatureType)"
                            }
                          },
                          "id": 7547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2820:31:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_SignatureType_$7491",
                            "typeString": "enum SignatureValidator.SignatureType"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2790:61:32"
                      },
                      {
                        "assignments": [
                          7550
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7550,
                            "mutability": "mutable",
                            "name": "v",
                            "nodeType": "VariableDeclaration",
                            "scope": 7729,
                            "src": "2903:7:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 7549,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "2903:5:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7551,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2903:7:32"
                      },
                      {
                        "assignments": [
                          7553
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7553,
                            "mutability": "mutable",
                            "name": "r",
                            "nodeType": "VariableDeclaration",
                            "scope": 7729,
                            "src": "2916:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7552,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2916:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7554,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2916:9:32"
                      },
                      {
                        "assignments": [
                          7556
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7556,
                            "mutability": "mutable",
                            "name": "s",
                            "nodeType": "VariableDeclaration",
                            "scope": 7729,
                            "src": "2931:9:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7555,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2931:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7557,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2931:9:32"
                      },
                      {
                        "assignments": [
                          7559
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7559,
                            "mutability": "mutable",
                            "name": "recovered",
                            "nodeType": "VariableDeclaration",
                            "scope": 7729,
                            "src": "2946:17:32",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7558,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2946:7:32",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7560,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2946:17:32"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_SignatureType_$7491",
                            "typeString": "enum SignatureValidator.SignatureType"
                          },
                          "id": 7564,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7561,
                            "name": "signatureType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7544,
                            "src": "3272:13:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_SignatureType_$7491",
                              "typeString": "enum SignatureValidator.SignatureType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 7562,
                              "name": "SignatureType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7491,
                              "src": "3289:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_SignatureType_$7491_$",
                                "typeString": "type(enum SignatureValidator.SignatureType)"
                              }
                            },
                            "id": 7563,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Illegal",
                            "nodeType": "MemberAccess",
                            "src": "3289:21:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_SignatureType_$7491",
                              "typeString": "enum SignatureValidator.SignatureType"
                            }
                          },
                          "src": "3272:38:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_SignatureType_$7491",
                              "typeString": "enum SignatureValidator.SignatureType"
                            },
                            "id": 7573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7570,
                              "name": "signatureType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7544,
                              "src": "3433:13:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_SignatureType_$7491",
                                "typeString": "enum SignatureValidator.SignatureType"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 7571,
                                "name": "SignatureType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7491,
                                "src": "3450:13:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_SignatureType_$7491_$",
                                  "typeString": "type(enum SignatureValidator.SignatureType)"
                                }
                              },
                              "id": 7572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "EIP712",
                              "nodeType": "MemberAccess",
                              "src": "3450:20:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_SignatureType_$7491",
                                "typeString": "enum SignatureValidator.SignatureType"
                              }
                            },
                            "src": "3433:37:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_SignatureType_$7491",
                                "typeString": "enum SignatureValidator.SignatureType"
                              },
                              "id": 7626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7623,
                                "name": "signatureType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7544,
                                "src": "3877:13:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_SignatureType_$7491",
                                  "typeString": "enum SignatureValidator.SignatureType"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 7624,
                                  "name": "SignatureType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7491,
                                  "src": "3894:13:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_SignatureType_$7491_$",
                                    "typeString": "type(enum SignatureValidator.SignatureType)"
                                  }
                                },
                                "id": 7625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "EthSign",
                                "nodeType": "MemberAccess",
                                "src": "3894:21:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_SignatureType_$7491",
                                  "typeString": "enum SignatureValidator.SignatureType"
                                }
                              },
                              "src": "3877:38:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_SignatureType_$7491",
                                  "typeString": "enum SignatureValidator.SignatureType"
                                },
                                "id": 7685,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7682,
                                  "name": "signatureType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7544,
                                  "src": "4427:13:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_SignatureType_$7491",
                                    "typeString": "enum SignatureValidator.SignatureType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 7683,
                                    "name": "SignatureType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7491,
                                    "src": "4444:13:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_SignatureType_$7491_$",
                                      "typeString": "type(enum SignatureValidator.SignatureType)"
                                    }
                                  },
                                  "id": 7684,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "WalletBytes",
                                  "nodeType": "MemberAccess",
                                  "src": "4444:25:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_SignatureType_$7491",
                                    "typeString": "enum SignatureValidator.SignatureType"
                                  }
                                },
                                "src": "4427:42:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_SignatureType_$7491",
                                    "typeString": "enum SignatureValidator.SignatureType"
                                  },
                                  "id": 7704,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7701,
                                    "name": "signatureType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7544,
                                    "src": "4682:13:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_SignatureType_$7491",
                                      "typeString": "enum SignatureValidator.SignatureType"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 7702,
                                      "name": "SignatureType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7491,
                                      "src": "4699:13:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_SignatureType_$7491_$",
                                        "typeString": "type(enum SignatureValidator.SignatureType)"
                                      }
                                    },
                                    "id": 7703,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "WalletBytes32",
                                    "nodeType": "MemberAccess",
                                    "src": "4699:27:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_SignatureType_$7491",
                                      "typeString": "enum SignatureValidator.SignatureType"
                                    }
                                  },
                                  "src": "4682:44:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 7720,
                                "nodeType": "IfStatement",
                                "src": "4678:187:32",
                                "trueBody": {
                                  "id": 7719,
                                  "nodeType": "Block",
                                  "src": "4728:137:32",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 7715,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 7705,
                                          "name": "isValid",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7503,
                                          "src": "4736:7:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          },
                                          "id": 7714,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7706,
                                            "name": "ERC1271_MAGICVALUE_BYTES32",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7484,
                                            "src": "4746:26:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "id": 7711,
                                                "name": "_hash",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7496,
                                                "src": "4824:5:32",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              {
                                                "id": 7712,
                                                "name": "_sig",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7500,
                                                "src": "4831:4:32",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              ],
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "id": 7708,
                                                    "name": "_signerAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7494,
                                                    "src": "4791:14:32",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "id": 7707,
                                                  "name": "IERC1271Wallet",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 3953,
                                                  "src": "4776:14:32",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_IERC1271Wallet_$3953_$",
                                                    "typeString": "type(contract IERC1271Wallet)"
                                                  }
                                                },
                                                "id": 7709,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4776:30:32",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IERC1271Wallet_$3953",
                                                  "typeString": "contract IERC1271Wallet"
                                                }
                                              },
                                              "id": 7710,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "isValidSignature",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3952,
                                              "src": "4776:47:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                                "typeString": "function (bytes32,bytes memory) view external returns (bytes4)"
                                              }
                                            },
                                            "id": 7713,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "4776:60:32",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes4",
                                              "typeString": "bytes4"
                                            }
                                          },
                                          "src": "4746:90:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "src": "4736:100:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "id": 7716,
                                      "nodeType": "ExpressionStatement",
                                      "src": "4736:100:32"
                                    },
                                    {
                                      "expression": {
                                        "id": 7717,
                                        "name": "isValid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7503,
                                        "src": "4851:7:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "functionReturnParameters": 7504,
                                      "id": 7718,
                                      "nodeType": "Return",
                                      "src": "4844:14:32"
                                    }
                                  ]
                                }
                              },
                              "id": 7721,
                              "nodeType": "IfStatement",
                              "src": "4423:442:32",
                              "trueBody": {
                                "id": 7700,
                                "nodeType": "Block",
                                "src": "4471:201:32",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7696,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7686,
                                        "name": "isValid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7503,
                                        "src": "4479:7:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "commonType": {
                                          "typeIdentifier": "t_bytes4",
                                          "typeString": "bytes4"
                                        },
                                        "id": 7695,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7687,
                                          "name": "ERC1271_MAGICVALUE",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7481,
                                          "src": "4489:18:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "id": 7692,
                                              "name": "_data",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7498,
                                              "src": "4559:5:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            },
                                            {
                                              "id": 7693,
                                              "name": "_sig",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7500,
                                              "src": "4566:4:32",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "expression": {
                                              "arguments": [
                                                {
                                                  "id": 7689,
                                                  "name": "_signerAddress",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7494,
                                                  "src": "4526:14:32",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "id": 7688,
                                                "name": "IERC1271Wallet",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3953,
                                                "src": "4511:14:32",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_contract$_IERC1271Wallet_$3953_$",
                                                  "typeString": "type(contract IERC1271Wallet)"
                                                }
                                              },
                                              "id": 7690,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4511:30:32",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IERC1271Wallet_$3953",
                                                "typeString": "contract IERC1271Wallet"
                                              }
                                            },
                                            "id": 7691,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "isValidSignature",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3942,
                                            "src": "4511:47:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
                                              "typeString": "function (bytes memory,bytes memory) view external returns (bytes4)"
                                            }
                                          },
                                          "id": 7694,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4511:60:32",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes4",
                                            "typeString": "bytes4"
                                          }
                                        },
                                        "src": "4489:82:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "src": "4479:92:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 7697,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4479:92:32"
                                  },
                                  {
                                    "expression": {
                                      "id": 7698,
                                      "name": "isValid",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7503,
                                      "src": "4586:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "functionReturnParameters": 7504,
                                    "id": 7699,
                                    "nodeType": "Return",
                                    "src": "4579:14:32"
                                  }
                                ]
                              }
                            },
                            "id": 7722,
                            "nodeType": "IfStatement",
                            "src": "3873:992:32",
                            "trueBody": {
                              "id": 7681,
                              "nodeType": "Block",
                              "src": "3917:500:32",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 7631,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "expression": {
                                            "id": 7628,
                                            "name": "_sig",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7500,
                                            "src": "3942:4:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          "id": 7629,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "length",
                                          "nodeType": "MemberAccess",
                                          "src": "3942:11:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "3937",
                                          "id": 7630,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3957:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_97_by_1",
                                            "typeString": "int_const 97"
                                          },
                                          "value": "97"
                                        },
                                        "src": "3942:17:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "hexValue": "5369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f5245515549524544",
                                        "id": 7632,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3969:57:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_7b8744bd0ed013fd02784e81a5f7187efa9f8bd07cbccc6b152c90accf732143",
                                          "typeString": "literal_string \"SignatureValidator#isValidSignature: LENGTH_97_REQUIRED\""
                                        },
                                        "value": "SignatureValidator#isValidSignature: LENGTH_97_REQUIRED"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_stringliteral_7b8744bd0ed013fd02784e81a5f7187efa9f8bd07cbccc6b152c90accf732143",
                                          "typeString": "literal_string \"SignatureValidator#isValidSignature: LENGTH_97_REQUIRED\""
                                        }
                                      ],
                                      "id": 7627,
                                      "name": "require",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [
                                        -18,
                                        -18
                                      ],
                                      "referencedDeclaration": -18,
                                      "src": "3925:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                        "typeString": "function (bool,string memory) pure"
                                      }
                                    },
                                    "id": 7633,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3925:109:32",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 7634,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3925:109:32"
                                },
                                {
                                  "expression": {
                                    "id": 7640,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7635,
                                      "name": "r",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7553,
                                      "src": "4042:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 7638,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4063:1:32",
                                          "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": {
                                          "id": 7636,
                                          "name": "_sig",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7500,
                                          "src": "4046:4:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 7637,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "readBytes32",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7291,
                                        "src": "4046:16:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                          "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 7639,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4046:19:32",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "4042:23:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "id": 7641,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4042:23:32"
                                },
                                {
                                  "expression": {
                                    "id": 7647,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7642,
                                      "name": "s",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7556,
                                      "src": "4073:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "hexValue": "3332",
                                          "id": 7645,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "4094:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_32_by_1",
                                            "typeString": "int_const 32"
                                          },
                                          "value": "32"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_32_by_1",
                                            "typeString": "int_const 32"
                                          }
                                        ],
                                        "expression": {
                                          "id": 7643,
                                          "name": "_sig",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7500,
                                          "src": "4077:4:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 7644,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "readBytes32",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 7291,
                                        "src": "4077:16:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                          "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                        }
                                      },
                                      "id": 7646,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4077:20:32",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "4073:24:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "id": 7648,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4073:24:32"
                                },
                                {
                                  "expression": {
                                    "id": 7656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7649,
                                      "name": "v",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7550,
                                      "src": "4105:1:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "baseExpression": {
                                            "id": 7652,
                                            "name": "_sig",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7500,
                                            "src": "4115:4:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          },
                                          "id": 7654,
                                          "indexExpression": {
                                            "hexValue": "3634",
                                            "id": 7653,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "4120:2:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_64_by_1",
                                              "typeString": "int_const 64"
                                            },
                                            "value": "64"
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "4115:8:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes1",
                                            "typeString": "bytes1"
                                          }
                                        ],
                                        "id": 7651,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "4109:5:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint8_$",
                                          "typeString": "type(uint8)"
                                        },
                                        "typeName": {
                                          "id": 7650,
                                          "name": "uint8",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "4109:5:32",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 7655,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4109:15:32",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "4105:19:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "id": 7657,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4105:19:32"
                                },
                                {
                                  "expression": {
                                    "id": 7671,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7658,
                                      "name": "recovered",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7559,
                                      "src": "4132:9:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "hexValue": "19457468657265756d205369676e6564204d6573736167653a0a3332",
                                                  "id": 7663,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "string",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "4190:34:32",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""
                                                  },
                                                  "value": "\u0019Ethereum Signed Message:\n32"
                                                },
                                                {
                                                  "id": 7664,
                                                  "name": "_hash",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7496,
                                                  "src": "4226:5:32",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73",
                                                    "typeString": "literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a3332\""
                                                  },
                                                  {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                ],
                                                "expression": {
                                                  "id": 7661,
                                                  "name": "abi",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": -1,
                                                  "src": "4173:3:32",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_abi",
                                                    "typeString": "abi"
                                                  }
                                                },
                                                "id": 7662,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "encodePacked",
                                                "nodeType": "MemberAccess",
                                                "src": "4173:16:32",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                  "typeString": "function () pure returns (bytes memory)"
                                                }
                                              },
                                              "id": 7665,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "4173:59:32",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "id": 7660,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "4163:9:32",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                              "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 7666,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4163:70:32",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "id": 7667,
                                          "name": "v",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7550,
                                          "src": "4243:1:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        {
                                          "id": 7668,
                                          "name": "r",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7553,
                                          "src": "4254:1:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "id": 7669,
                                          "name": "s",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7556,
                                          "src": "4265:1:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 7659,
                                        "name": "ecrecover",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -6,
                                        "src": "4144:9:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                          "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                                        }
                                      },
                                      "id": 7670,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4144:130:32",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "4132:142:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 7672,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4132:142:32"
                                },
                                {
                                  "expression": {
                                    "id": 7677,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7673,
                                      "name": "isValid",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7503,
                                      "src": "4282:7:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 7676,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7674,
                                        "name": "_signerAddress",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7494,
                                        "src": "4292:14:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "id": 7675,
                                        "name": "recovered",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7559,
                                        "src": "4310:9:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "4292:27:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "4282:37:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 7678,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4282:37:32"
                                },
                                {
                                  "expression": {
                                    "id": 7679,
                                    "name": "isValid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7503,
                                    "src": "4334:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "functionReturnParameters": 7504,
                                  "id": 7680,
                                  "nodeType": "Return",
                                  "src": "4327:14:32"
                                }
                              ]
                            }
                          },
                          "id": 7723,
                          "nodeType": "IfStatement",
                          "src": "3429:1436:32",
                          "trueBody": {
                            "id": 7622,
                            "nodeType": "Block",
                            "src": "3472:395:32",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7578,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 7575,
                                          "name": "_sig",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7500,
                                          "src": "3497:4:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 7576,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "length",
                                        "nodeType": "MemberAccess",
                                        "src": "3497:11:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "3937",
                                        "id": 7577,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3512:2:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_97_by_1",
                                          "typeString": "int_const 97"
                                        },
                                        "value": "97"
                                      },
                                      "src": "3497:17:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    {
                                      "hexValue": "5369676e617475726556616c696461746f7223697356616c69645369676e61747572653a204c454e4754485f39375f5245515549524544",
                                      "id": 7579,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3524:57:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_7b8744bd0ed013fd02784e81a5f7187efa9f8bd07cbccc6b152c90accf732143",
                                        "typeString": "literal_string \"SignatureValidator#isValidSignature: LENGTH_97_REQUIRED\""
                                      },
                                      "value": "SignatureValidator#isValidSignature: LENGTH_97_REQUIRED"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_7b8744bd0ed013fd02784e81a5f7187efa9f8bd07cbccc6b152c90accf732143",
                                        "typeString": "literal_string \"SignatureValidator#isValidSignature: LENGTH_97_REQUIRED\""
                                      }
                                    ],
                                    "id": 7574,
                                    "name": "require",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [
                                      -18,
                                      -18
                                    ],
                                    "referencedDeclaration": -18,
                                    "src": "3480:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                      "typeString": "function (bool,string memory) pure"
                                    }
                                  },
                                  "id": 7580,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3480:109:32",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 7581,
                                "nodeType": "ExpressionStatement",
                                "src": "3480:109:32"
                              },
                              {
                                "expression": {
                                  "id": 7587,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 7582,
                                    "name": "r",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7553,
                                    "src": "3597:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 7585,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3618:1:32",
                                        "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": {
                                        "id": 7583,
                                        "name": "_sig",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7500,
                                        "src": "3601:4:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 7584,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "readBytes32",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7291,
                                      "src": "3601:16:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 7586,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3601:19:32",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "src": "3597:23:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 7588,
                                "nodeType": "ExpressionStatement",
                                "src": "3597:23:32"
                              },
                              {
                                "expression": {
                                  "id": 7594,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 7589,
                                    "name": "s",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7556,
                                    "src": "3628:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "hexValue": "3332",
                                        "id": 7592,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3649:2:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        },
                                        "value": "32"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        }
                                      ],
                                      "expression": {
                                        "id": 7590,
                                        "name": "_sig",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7500,
                                        "src": "3632:4:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 7591,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "readBytes32",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7291,
                                      "src": "3632:16:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$",
                                        "typeString": "function (bytes memory,uint256) pure returns (bytes32)"
                                      }
                                    },
                                    "id": 7593,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3632:20:32",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "src": "3628:24:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "id": 7595,
                                "nodeType": "ExpressionStatement",
                                "src": "3628:24:32"
                              },
                              {
                                "expression": {
                                  "id": 7603,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 7596,
                                    "name": "v",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7550,
                                    "src": "3660:1:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 7599,
                                          "name": "_sig",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7500,
                                          "src": "3670:4:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        },
                                        "id": 7601,
                                        "indexExpression": {
                                          "hexValue": "3634",
                                          "id": 7600,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "3675:2:32",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_64_by_1",
                                            "typeString": "int_const 64"
                                          },
                                          "value": "64"
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3670:8:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      ],
                                      "id": 7598,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3664:5:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint8_$",
                                        "typeString": "type(uint8)"
                                      },
                                      "typeName": {
                                        "id": 7597,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3664:5:32",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 7602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3664:15:32",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "3660:19:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "id": 7604,
                                "nodeType": "ExpressionStatement",
                                "src": "3660:19:32"
                              },
                              {
                                "expression": {
                                  "id": 7612,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 7605,
                                    "name": "recovered",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7559,
                                    "src": "3687:9:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "arguments": [
                                      {
                                        "id": 7607,
                                        "name": "_hash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7496,
                                        "src": "3709:5:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 7608,
                                        "name": "v",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7550,
                                        "src": "3716:1:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      {
                                        "id": 7609,
                                        "name": "r",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7553,
                                        "src": "3719:1:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 7610,
                                        "name": "s",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7556,
                                        "src": "3722:1:32",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 7606,
                                      "name": "ecrecover",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -6,
                                      "src": "3699:9:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                                        "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                                      }
                                    },
                                    "id": 7611,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3699:25:32",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "3687:37:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "id": 7613,
                                "nodeType": "ExpressionStatement",
                                "src": "3687:37:32"
                              },
                              {
                                "expression": {
                                  "id": 7618,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "id": 7614,
                                    "name": "isValid",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7503,
                                    "src": "3732:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 7617,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7615,
                                      "name": "_signerAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7494,
                                      "src": "3742:14:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "id": 7616,
                                      "name": "recovered",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7559,
                                      "src": "3760:9:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "3742:27:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "3732:37:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 7619,
                                "nodeType": "ExpressionStatement",
                                "src": "3732:37:32"
                              },
                              {
                                "expression": {
                                  "id": 7620,
                                  "name": "isValid",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7503,
                                  "src": "3784:7:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "functionReturnParameters": 7504,
                                "id": 7621,
                                "nodeType": "Return",
                                "src": "3777:14:32"
                              }
                            ]
                          }
                        },
                        "id": 7724,
                        "nodeType": "IfStatement",
                        "src": "3268:1597:32",
                        "trueBody": {
                          "id": 7569,
                          "nodeType": "Block",
                          "src": "3312:111:32",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "hexValue": "5369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20494c4c4547414c5f5349474e4154555245",
                                    "id": 7566,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3327:56:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_6529fbf3c99f3f5ca219706ab85ade8b8d956a1a3a873fc084e98e3eec9620e7",
                                      "typeString": "literal_string \"SignatureValidator#isValidSignature: ILLEGAL_SIGNATURE\""
                                    },
                                    "value": "SignatureValidator#isValidSignature: ILLEGAL_SIGNATURE"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_6529fbf3c99f3f5ca219706ab85ade8b8d956a1a3a873fc084e98e3eec9620e7",
                                      "typeString": "literal_string \"SignatureValidator#isValidSignature: ILLEGAL_SIGNATURE\""
                                    }
                                  ],
                                  "id": 7565,
                                  "name": "revert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [
                                    -19,
                                    -19
                                  ],
                                  "referencedDeclaration": -19,
                                  "src": "3320:6:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                    "typeString": "function (string memory) pure"
                                  }
                                },
                                "id": 7567,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3320:64:32",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7568,
                              "nodeType": "ExpressionStatement",
                              "src": "3320:64:32"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "5369676e617475726556616c696461746f7223697356616c69645369676e61747572653a20554e535550504f525445445f5349474e4154555245",
                              "id": 7726,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5160:60:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_5499569b0e2c16f9d78ba5852c84f35e9af2945a2bef902e56c28b6eda3ee8af",
                                "typeString": "literal_string \"SignatureValidator#isValidSignature: UNSUPPORTED_SIGNATURE\""
                              },
                              "value": "SignatureValidator#isValidSignature: UNSUPPORTED_SIGNATURE"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_5499569b0e2c16f9d78ba5852c84f35e9af2945a2bef902e56c28b6eda3ee8af",
                                "typeString": "literal_string \"SignatureValidator#isValidSignature: UNSUPPORTED_SIGNATURE\""
                              }
                            ],
                            "id": 7725,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -19,
                              -19
                            ],
                            "referencedDeclaration": -19,
                            "src": "5153:6:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 7727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5153:68:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7728,
                        "nodeType": "ExpressionStatement",
                        "src": "5153:68:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7492,
                    "nodeType": "StructuredDocumentation",
                    "src": "1391:653:32",
                    "text": " @dev Verifies that a hash has been signed by the given signer.\n @param _signerAddress  Address that should have signed the given hash.\n @param _hash           Hash of the EIP-712 encoded data\n @param _data           Full EIP-712 data structure that was hashed and signed\n @param _sig            Proof that the hash has been signed by signer.\n      For non wallet signatures, _sig is expected to be an array tightly encoded as\n      (bytes32 r, bytes32 s, uint8 v, uint256 nonce, SignatureType sigType)\n @return isValid True if the address recovered from the provided signature matches the input signer address."
                  },
                  "functionSelector": "fa4e12d7",
                  "id": 7730,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidSignature",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7501,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7494,
                        "mutability": "mutable",
                        "name": "_signerAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 7730,
                        "src": "2078:22:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7493,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2078:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7496,
                        "mutability": "mutable",
                        "name": "_hash",
                        "nodeType": "VariableDeclaration",
                        "scope": 7730,
                        "src": "2106:13:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7495,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2106:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7498,
                        "mutability": "mutable",
                        "name": "_data",
                        "nodeType": "VariableDeclaration",
                        "scope": 7730,
                        "src": "2125:18:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7497,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2125:5:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7500,
                        "mutability": "mutable",
                        "name": "_sig",
                        "nodeType": "VariableDeclaration",
                        "scope": 7730,
                        "src": "2149:17:32",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7499,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2149:5:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2072:98:32"
                  },
                  "returnParameters": {
                    "id": 7504,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7503,
                        "mutability": "mutable",
                        "name": "isValid",
                        "nodeType": "VariableDeclaration",
                        "scope": 7730,
                        "src": "2204:12:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7502,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2204:4:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2203:14:32"
                  },
                  "scope": 7731,
                  "src": "2047:3179:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 7732,
              "src": "416:4812:32"
            }
          ],
          "src": "0:5229:32"
        },
        "id": 32
      }
    }
  }
}
